let bool: boolean = true; let num: number = 1; let str: string = 'i am string';
let arr1: number[] = [1, 2, 3]; let arr2: Array<number | string> = [1, 2, 3, 'q']; // 聯合類型數組 // 元組: 定義一個已知元素數量和類型的數組,各元素的類型沒必要相同 let tuple: [number, string] = [1, 's'] // tuple.push('a') 容許使用數組的方法添加 可是關於越界的元素沒法訪問 // 原則其元組上不能夠改變,容許 push 應該是一個TypeScript 的一個缺陷 // 函數:需聲明參數的類型和返回值類型(一般可省略,由TS推算) let add = (a:number, b:number) => a + b let computed: (x: number, y: number) => number // 聲明返回值 computed = (a, b) => a + b // 參數名稱可不一樣 // 對象 let obj1: object = { x: 1, y: 2 } // obj1.x = 3 // 報錯,由於上述聲明只定義了obj1爲對象,未聲明對象下屬性的類型 let obj2: {x: number, y:number} = { x: 1, y:2 } // 正肯定義方式
// symbol: 含義是具備惟一的值 let s1: symbol = Symbol(); let s2 = Symbol() // null 和 undefined (官方文檔中,這兩個類型爲其它數據類型的子類型) let nu: null = null; let un: undefined = undefined; // undefined不能賦值其它數據類型 // add = null 可設置tsconfig.json中"strictNullChecks": false // 若想要在嚴格模式下 可採用聯合類型 便可經過類型檢查 let mult: number | null | undefined = null; // void 表示沒有任何類型 當一個函數沒有返回值時,一般會見到其返回值類型是 void let noReturn = () => {} // any 能夠賦值爲任意類型 // 有時候,咱們會想要爲那些在編程階段還不清楚類型的變量指定一個類型。 這些值可能來自於動態的內容,好比來自用戶輸入或第三方代碼庫。 // 這種狀況下,咱們不但願類型檢查器對這些值進行檢查而是直接讓它們經過編譯階段的檢查。 那麼咱們可使用 any類型來標記這些變量: let x // never 永遠不會有返回值的類型 例: // 1.函數拋出異常 就不會有返回值 let error = () => { throw new Error('error') } // 2.死循環,永遠不會有返回 let endless = () => { while(true) {} }