📅  最后修改于: 2023-12-03 15:05:40.087000             🧑  作者: Mango
在 TypeScript 中,类型断言可以用来手动指定一个值的类型。
在 TypeScript 中,有时候编译器无法确定一个变量的类型或者我们需要将一个类型转换成另一个类型,这时候就需要使用类型断言。
TypeScript 提供了两种类型断言的方式:
let someValue: any = "hello world";
let strLength: number = (<string>someValue).length;
let someValue: any = "hello world";
let strLength: number = (someValue as string).length;
function getLength(str: string | string[]): number {
if((<string>str).length) {
return (<string>str).length; // 转换成string类型,可以使用length属性
} else {
return (<string[]>str).length; // 转换成string数组类型,可以使用length属性
}
}
interface Cat {
name: string;
run(): void;
}
interface Fish {
name: string;
swim(): void;
}
function generatePet(): Cat | Fish {
//...
}
let pet = generatePet();
if((<Fish>pet).swim) { //将pet断言成Fish类型,可以调用swim方法
(<Fish>pet).swim();
} else {
(<Cat>pet).run();
}
在进行类型断言时,一定要确保该变量的值确实符合我们断言的类型,否则会在运行时报错。为了避免这种情况,可以在进行类型断言之前使用 typeof
或者 instanceof
进行类型检查。
function getLength(str: string | string[]): number {
if(typeof str === 'string') {
return str.length;
} else {
return str.join(',').length;
}
}