其實TypeScript 是 JavaScript 的超集。并且類型系統是可選的,如果省略掉,那麼就是 JavaScript。
ts的優勢
TypeScript是微軟開發的一個開源的程式設計語言。可以通過Babel轉譯為JavaScript代碼,這樣就能運作在任何浏覽器,任何作業系統。
- TypeScript 增加了代碼的可讀性和可維護性。
- 類型系統實際上是最好的文檔,通過類型的定義就知道變量的内容格式。
- 編譯階段會檢查錯誤,減少運作報錯。
- 增強了代碼補全,接口提示,跳轉到定義,重構等。
- TypeScript 相容性好
- Typescript是帶類型的javascript的超集,完全相容js文法。
- 不顯示的定義類型,也能夠自動做出類型推導。
- 相容第三方庫,即使第三方庫不是用 TypeScript 寫的,也可以編寫單獨的類型檔案供 TypeScript 讀取。
類型系統
既然TypeScript是帶類型的js,那麼學習ts的核心,就是掌握類型系統。
- 原始類型:
、string
、number
。boolean
let num: number;
let str: string;
let bool: boolean;
- 數組。
letstrArray: string[];
- 接口:interface是 TypeScript 的一個核心知識,它能在一個類型聲明中合并衆多類型聲明。
interface Persion {
name: string;
age: number;
}
- 内聯類型:它與上面的接口不同,可以使用内聯注解文法注解任何内容。
let Persion: {
name: string;
age: number;
}
- 特殊類型。
、any
、null
以及undefined
。void
- any:類型在 TypeScript 類型系統中占有特殊的地位。它提供給你一個類型系統的「後門」,TypeScript 将會把類型檢查關閉。
- null 和 undefined: null 和 undefined 和
類型的變量一樣,都能被指派給任意類型的變量。any
- void:
用來表示沒有一個傳回值的函數。:void
function loggingIdentity<T>(arg: T): T {
console.log(arg.length); // Error: T doesn't have .length return arg;
}
- 聯合類型:變量可滿足多個類型,将不同類型以and關系連接配接。
let union: number | string | boolean;