类型断言 as
const canvas = document.getElementById("canvas") as HTMLCanvasElement
const canvas = <HTMLCanvasElement>document.getElementById("canvas")
类型收窄
1.typeof
function add(first: string | number, second: string | number) {
return first + second;
}
function add(first: string | number, second: string | number) {
if (typeof first === "string" || typeof second === "string") {
return ${first}${second};
}
return first + second;
}
2.if(true false)
3.Equality narrowing
4.in
function judgeWhoTwo(animal: Waiter | Teacher) {
if ("skill" in animal) {
animal.skill(); } else {
animal.say();
}
}
5.instanceof
// 类型保护之 instanceof 只能用在类上
class NumberObj {
count: number;
}
function addObj(first: object | NumberObj, second: object | NumberObj) {
if (first instanceof NumberObj && second instanceof NumberObj) {
return first.count + second.count;
}
return 0;
}