TypeScript
TypeScript是可以編譯成任意版本js的
TypeScript可以通過(guò)配置調(diào)整編譯校驗(yàn)的嚴(yán)格性
以下將 TypeScript 簡(jiǎn)寫為 ts
ts 提供的類型
// 聲明變量指定number類型
let a1: number;
a1 = 10;
// 此時(shí)賦值非number類型會(huì)引起編譯報(bào)錯(cuò)
// a1 = 'hello';
// 聲明變量時(shí)直接賦值双霍,ts可自動(dòng)檢測(cè)類型
let c1 = false;
// 此時(shí)賦值非boolean類型會(huì)引起編譯報(bào)錯(cuò)
// c1 = 1;
// 可以使用 | 連接多個(gè)類型(此時(shí)變量的類型可以是指定類型的其中之一)
let d1: number | null | undefined;
d1 = 1;
d1 = null;
// 函數(shù)參數(shù)指定類型
function sum(a2: number, b2: number) {
return a2 + b2;
}
// 如下調(diào)用函數(shù)時(shí)會(huì)編譯報(bào)錯(cuò):參數(shù)必須是number,參數(shù)必須是2個(gè)
// sum(123, '456');
// sum(123, 456, 789);
// sum(123);
// 函數(shù)返回值指定類型
function sum2(c2, d2): number {
return c2 + d2;
// 返回值必須是number染坯,否則會(huì)編譯報(bào)錯(cuò)
// return '123';
}
// ts提供的類型如圖
// 其中字面量就是固定的值(相當(dāng)于常量)
let a3: 10 = 10;
let b3: '你好' = '你好';
let c3: {haha: 1} = {haha: 1};
// 只能改成固定的值丘逸,相當(dāng)于沒(méi)改,改成其他值編譯報(bào)錯(cuò)
a3 = 10;
// a3 = 20;
// b3 = '早上好';
c3 = {haha: 1};
// 字面量定義多個(gè)值(相當(dāng)于下拉選的值)
let d3: 'yes' | 'no' | null;
d3 = 'yes';
d3 = null;
// d3 = 'yes123';
// any 表示任意類型羞反,并且ts不會(huì)對(duì)該類型的變量做類型校驗(yàn)(不建議使用囤萤,應(yīng)盡量避免J桥俊)
let a4: any;
a4 = 1;
a4 = true;
a4 = '';
a4 = 15;
// 如果聲明一個(gè)變量時(shí)沒(méi)有指定類型,也沒(méi)有賦值富雅,這個(gè)變量就默認(rèn)是any(不建議使用肛搬,應(yīng)盡量避免!)
let b4;
b4 = 1;
b4 = true;
b4 = '';
// unknown 表示未知類型(變量本身賦值時(shí)和 any 效果一樣)
let c4: unknown;
c4 = 1;
c4 = true;
c4 = '';
c4 = 15;
// 但是使用變量時(shí)蛤奢,unknown 和 any 是有區(qū)別的(unknown 類型更安全)
let d4: number;
// a4(any) 可直接賦值給 d4(number)
d4 = a4;
// c4(unknown) 必須做類型校驗(yàn) 或 類型斷言
// d4 = c4;
if (typeof c4 === 'number') {
d4 = c4;
}
// 類型斷言,告訴編譯器 c4是number啤贩,有以下兩種寫法
d4 = c4 as number;
d4 = <number>c4;