ts教程要點(diǎn)說明

ts-node 是一個非官方的 npm 模塊,可以直接運(yùn)行 TypeScript 代碼。

  • npm install -g ts-node
  • ts-node script.ts
  • 如果執(zhí)行 ts-node 命令不帶有任何參數(shù),它會提供一個 TypeScript 的命令行 REPL 運(yùn)行環(huán)境,你可以在這個環(huán)境中輸入 TypeScript 代碼,逐行執(zhí)行。
    ts-node
  • 要退出這個 REPL 環(huán)境,可以按下 Ctrl + d,或者輸入.exit。

TypeScript 提供了一個編譯選項(xiàng)noImplicitAny,打開該選項(xiàng),只要推斷出any類型就會報(bào)錯。

  • tsc --noImplicitAny app.ts
  • 這里有一個特殊情況,即使打開了noImplicitAny,使用let和var命令聲明變量,但不賦值也不指定類型,是不會報(bào)錯的。

unknown跟any的相似之處,在于所有類型的值都可以分配給unknown類型。

  • unknown類型的變量,不能直接賦值給其他類型的變量(除了any類型和unknown類型)。這就避免了污染問題,從而克服了any類型的一大缺點(diǎn)。
  • 不能直接調(diào)用unknown類型變量的方法和屬性。
  • unknown類型變量能夠進(jìn)行的運(yùn)算是有限的,只能進(jìn)行比較運(yùn)算(運(yùn)算符==、===、!=、!==、||、&&、?)、取反運(yùn)算(運(yùn)算符!)、typeof運(yùn)算符和instanceof運(yùn)算符這幾種,其他運(yùn)算都會報(bào)錯。
  • TypeScript 有兩個“頂層類型”(any和unknown),但是“底層類型”只有never唯一一個。

注意,如果沒有聲明類型的變量,被賦值為undefined或null,在關(guān)閉編譯設(shè)置noImplicitAny和strictNullChecks時,它們的類型會被推斷為any。如果希望避免這種情況,則需要打開編譯選項(xiàng)strictNullChecks。

TypeScript 提供了一個編譯選項(xiàng)strictNullChecks。只要打開這個選項(xiàng),undefined和null就不能賦值給其他類型的變量(除了any類型和unknown類型)。

  • 打開strictNullChecks以后,undefined和null這兩種值也不能互相賦值了。
  • 總之,打開strictNullChecks以后,undefined和null只能賦值給自身,或者any類型和unknown類型的變量。

聯(lián)合類型可以與值類型相結(jié)合,表示一個變量的值有若干種可能。

  • let rainbowColor:'赤'|'橙'|'黃'|'綠'|'青'|'藍(lán)'|'紫';

交叉類型常常用來為對象類型添加新屬性。

type A = { foo: number };
type B = A & { bar: number };

  • 上面示例中,類型B是一個交叉類型,用來在A的基礎(chǔ)上增加了屬性bar。

TypeScript 將typeof運(yùn)算符移植到了類型運(yùn)算,它的操作數(shù)依然是一個值,但是返回的不是字符串,而是該值的 TypeScript 類型。

const a = { x: 0 };
type T0 = typeof a; // { x: number }
type T1 = typeof a.x; // number

  • 這種用法的typeof返回的是 TypeScript 類型,所以只能用在類型運(yùn)算之中(即跟類型相關(guān)的代碼之中),不能用在值運(yùn)算。

子類型可以賦值給父類型,反之不可以

let a:'hi' = 'hi';
let b:string = 'hello';
b = a; // 正確,a是值類型hi,它是string類型的子類
a = b; // 報(bào)錯,b是a的父類型,不可以
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容