// 基礎類型 null, undefined, symbol, boolean, void const count: number = 123; const teacherName: string = 'zina';
*:如果基礎類型是一行的,ts 能推斷出它的類型,如果是兩行就不一定了
let count; // let count: any count = 123;
這個時候,ts 並不能推斷出它的類型
let count: number;
count = 123;
這才是正確的寫法
// 對象類型 const teacher: { name: string, age: number } = { name: 'zina', age: 18 } // 可以看到基礎類型很容易,對象類型是基礎類型結合起來的更復雜的類型 // 數組也屬於對象類型 const numbers: number[] = [1, 2, 3] // 這種語法意思是 numbers 是一個數組,數組中的每一項必須是個 number 類型,里面任一一個改成字符串就會報錯 // 類 class Person {} const zina: Person = new Person(); // zina 必須是一個 Person 類對應的對象 // 函數 const getTotal: () => number = () =>{ return 123; } // getTotal 是一個函數,這個函數返回值是一個 number,具體函數的實現是后面的函數
總結:對象,數組,類,函數都屬於對象類型,在 ts 里面有兩種,基礎類型和對象類型
*: 擴展
函數的兩種寫法
/** * 函數🉑️值是一個字符串類型,返回值是數字類型,字符串轉數字 * @param str * 將鼠標放在 func 上面,可以看到參數,返回值是固定了 */ const func = (str: string): number => { return parseInt(str, 10); } // 函數的第二種寫法 const func1:(str: string) => number = (str) => { return parseInt(str, 10); }
// Date 類型 const date: Date = new Date(); => const date = new Date()
ts 能推斷出 Date 類型,可以不寫
// 其他的 case const rawData = '{"name": "zina"}'; const newData = JSON.parse(rawData); // const newData: any // JSON.parse 並不能推斷出后面的類型,如果用 JSON.parse 或其他內置函數,會遇到這種問題,需要類型注解 interface Person { name: 'string' } const rawData = '{"name": "zina"}'; const newData: Person = JSON.parse(rawData);
let temp = 123; temp = '456'; // 這種寫法會報錯,但有時候就是想同一個變量后續可以賦值成字符串怎么整 let temp: number | string = 123; temp = '456'; // 可以在聲明變量的時候加上 string 的類型,有種像或的語法,有可能是 number,也有可能是 string