補充
# undefined和null都是其他數據類型的子集
let str:string = "ddd";
str = undefined // 不會報錯
# 如果不指定類型,那默認是any,後續的任何類型的賦值操作都允許而不會類型檢查
let b;
b = 1;
b = "fsss";
# 聯合數據類型注意點:其中toString是string和number都擁有的,不然不允許
let demo:string | number;
console.log(demo.toString());
# 剩餘參數, 其中剩餘參數的類型一定是any,只讀屬性一旦賦值便不能修改
interface Istate {
age:number,
readonly name: string,
[arg:string]: any
}
let obj1:Istate = {
age: 10,
name: '你好'
}
# 數組聲明的三種表示方法
- let arr:number [] = [1, 2, 3];
- let arrType: Array<number> = [1, 2, 3];
- interface IArr {
[index: number]:number
}
interface Istate {
username: string,
age: number
}
let arrType4:IArr = []
let arrType5: Array<Istate> = [{
username: '張三',
age: 90
}]
let arrType6: Istate[] = [{ username: '張三', age: 90 }]
# 函數約束
- let funcType1:(name: string, age: number) => number = function (name: string, age:number):number{}
- interface funcType6 {
(name: string, age:number):number
}
let funcType6: funcType6 = function (name: string, age:number):number{}
# 類型斷言不是類型轉換,只能斷言聯合類型裏存在的類型