今天要和大家介紹TypeScript的變數宣告和型別推論、型別註解,話不多說,讓我們趕快開始吧!
在進入變數宣告前,我們來探討一件事:TypeScript是怎麼確定型別有誤的?
這道問題的解答,能夠透過即將介紹的型別註記和型別推論得到答案。
string、number、boolean......) 。let myName: string = "Wendy"; //變數:型別,即為型別註記的應用
let myBirthDay: number = 1231;
myBirthDay = "Henry";//若指派錯誤的型別,TS會在編譯階段直接報錯
let data; 這樣宣告卻不給初始值,TS 無法推論,反而將變數data當作 any。let myName = "Henry"; //此時TS會將變數myName的型別視為string
myName = 7890; //若將變數更改為number,TS則會在編譯階段報錯
let id; //此時型別推論無法確定變數id的型別,只能將其當成any看待
TS的變數宣告常用的有兩種:let、const,我目前舉的例子都是以let為宣告方式,const反而不多,那兩者之間的差異又在哪裡?我們接著來探討一下吧!
在探討之前,我想先帶大家了解作用域是什麼?
作用域:指函數及變數能夠被訪問的範圍,常分為全域、區塊及函式。
let宣告方法擁有能夠重新賦值、不可重複宣告的特性,let作為區塊作用域,其值只能在特定範圍內使用。
//let重新賦值:
let a = 123;
a = 321;
console.log(a); //輸出:321
//不可重複宣告:
let b = 123;
let b = 456;
console.log(b); //因為重複宣告變數b,會導致TS報錯,let不允許建立同名變數
//區域作用域
if(true){
let c = 888;
let d = 111;
console.log(c/d);//輸出:8
}
console.log(c+d); //因為變數c與d皆在if條件判斷內,不適用在if外,此時TS會報錯
const即「constant 常數」,因此擁有常數不變(不可重新賦值)、不可重複宣告的特色,作為const宣告的變數,其宣告方式比let更加嚴謹,和let一樣屬於區塊作用域。
//不可重新賦值
const a = 0;
a = 45;
console.log(a);
//因為變數a以const的方式宣告,此時輸出會因為重新賦值而報錯
今天介紹了在TS裡重要的變數宣告和型別推論、型別註解,即使不難,但了解他們究竟在做甚麼也是很重要的基本概念,明天會介紹TS常用的基本型別,大家明天見!