亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索
TypeScript 教程 / 特殊類(lèi)型

特殊類(lèi)型

類(lèi)型:any

any 是一種禁用類(lèi)型檢查并實(shí)際上允許使用所有類(lèi)型的類(lèi)型。

下面的例子沒(méi)有使用 any,將會(huì)拋出一個(gè)錯(cuò)誤:

沒(méi)有 any 的例子

let u = true;
u = "string"; // 錯(cuò)誤:類(lèi)型 'string' 不能分配給類(lèi)型 'boolean'。
Math.round(u); // 錯(cuò)誤:類(lèi)型為 'boolean' 的參數(shù)不能分配給類(lèi)型為 'number' 的參數(shù)。

將特殊類(lèi)型 any 設(shè)置為 true 會(huì)禁用類(lèi)型檢查:

帶有 any 的例子

let v: any = true;
v = "string"; // 沒(méi)有錯(cuò)誤,因?yàn)樗梢允?“any” 類(lèi)型
Math.round(v); // 沒(méi)有錯(cuò)誤,因?yàn)樗梢允?“any” 類(lèi)型

由于 any 禁用了類(lèi)型檢查,因此它可以作為一種有用的方法來(lái)解決錯(cuò)誤,但 TypeScript 將無(wú)法提供類(lèi)型安全性,而且依賴類(lèi)型數(shù)據(jù)的工具(如自動(dòng)完成)將無(wú)法工作。請(qǐng)記住,應(yīng)該不惜 “任何” 代價(jià)避免使用它......

類(lèi)型:unknown

unknown 是一種與 any 類(lèi)似但更安全的替代方案。

TypeScript 將阻止使用 unknown 類(lèi)型,如下面的例子所示:

let w: unknown = 1;
w = "string"; // no error
w = {
  runANonExistentMethod: () => {
    console.log("I think therefore I am");
  }
} as { runANonExistentMethod: () => void}
// 當(dāng)我們不知道類(lèi)型時(shí),如何避免下面注釋掉的代碼出現(xiàn)錯(cuò)誤?
// w.runANonExistentMethod(); // Error: Object is of type 'unknown'.
if(typeof w === 'object' && w !== null) {
  (w as { runANonExistentMethod: Function }).runANonExistentMethod();
}
// 盡管我們必須多次轉(zhuǎn)換,但我們可以在 if 中進(jìn)行檢查以確保我們的類(lèi)型安全,并進(jìn)行更安全的轉(zhuǎn)換

將上面的例子與之前的帶有 any 的例子進(jìn)行比較。

當(dāng)您不知道要鍵入的數(shù)據(jù)類(lèi)型時(shí),最好使用 unknown。要稍后添加類(lèi)型,您需要進(jìn)行類(lèi)型轉(zhuǎn)換。

類(lèi)型轉(zhuǎn)換是當(dāng)我們使用 “as” 關(guān)鍵字來(lái)說(shuō)屬性或變量是屬于轉(zhuǎn)換后的類(lèi)型時(shí)。

類(lèi)型:never

never 在定義時(shí)實(shí)際上會(huì)拋出一個(gè)錯(cuò)誤。

let x: never = true; // 錯(cuò)誤:類(lèi)型 'boolean' 不能分配給類(lèi)型 'never'。

never 很少使用,尤其是單獨(dú)使用,其主要用途是在高級(jí)泛型中。

類(lèi)型:undefined 和 null

undefinednull 是分別引用 JavaScript 原語(yǔ) undefinednull 的類(lèi)型。

let y: undefined = undefined;
let z: null = null;

除非在 tsconfig.json 文件中啟用了 strictNullChecks,否則這些類(lèi)型沒(méi)有多大用處。