typescript 和 javascript幾乎一樣,擁有相同的數(shù)據(jù)類型,另外在javascript基礎(chǔ)上提供了更加實用的類型供開發(fā)使用
和javascript基本一致,也分成:基本類型,引用類型
在基礎(chǔ)類型上,typescript增添了void、any、emum等原始類型
在開發(fā)階段,可以為明確的變量定義為某種類型,這樣typescript就能在編譯階段進(jìn)行類型檢查,當(dāng)類型不合符預(yù)期結(jié)果的時候則會出現(xiàn)錯誤提示
typescript 的數(shù)據(jù)類型主要有:
boolean(布爾類型)
number(數(shù)字類型)
string(字符串類型)
array(數(shù)組類型)
null 和 undefined 類型
object 對象類型
tuple(元組類型)
enum(枚舉類型)
any(任意類型)
void 類型
never 類型
tuple(元組類型)
元祖類型,允許表示一個已知元素數(shù)量和類型的數(shù)組,各元素的類型不必相同,賦值的類型、位置、個數(shù)需要和定義(生明)的類型、位置、個數(shù)一致
let tupleArr:[number, string, boolean];
tupleArr = [12, '34', true]; //正確
tupleArr = [12, '34'] // 報錯
enum(枚舉類型)
enum類型是對JavaScript標(biāo)準(zhǔn)數(shù)據(jù)類型的一個補(bǔ)充,使用枚舉類型可以為一組數(shù)值賦予別稱
enum Color {Red, Yellow, Blue}
let c: Color = Color.Blue;
any(任意類型)
可以指定任何類型的值,在編程階段還不清楚類型的變量指定一個類型,不希望類型檢查器對這些值進(jìn)行檢查而是直接讓它們通過編譯階段的檢查,這時候可以使用any類型,使用any類型允許被賦值為任意類型,甚至可以調(diào)用其屬性、方法
定義存儲各種類型數(shù)據(jù)的數(shù)組時,示例
let arrayList: any[] = [1, false, 'fine'];
arrayList[1] = 100;
void 類型
用于標(biāo)識方法返回值的類型,表示該方法沒有返回值
function hello(): void {
alert("Hello world");
}
never 類型
never是其他類型 (包括null和 undefined)的子類型,可以賦值給任何類型,代表從不會出現(xiàn)的值
但是沒有類型是 never 的子類型,這意味著聲明 never 的變量只能被 never 類型所賦值。
never 類型一般用來指定那些總是會拋出異常、無限循環(huán)
let a:never;
a = 123; // 錯誤的寫法:不能將類型‘number’分配給類型‘never’
a = (() => { // 正確的寫法
throw new Error('錯誤');
})()
// 返回never的函數(shù)必須存在無法達(dá)到的終點(diǎn)
function error(message: string): never {
throw new Error(message);
}