上一章TypeScript教程请查看:TypeScript类型推断
在TypeScript中,类型断言是一种告诉编译器变量类型的机制。当TypeScript确定赋值无效时,我们可以使用类型断言覆盖类型。如果我们使用类型断言,那么赋值总是有效的,因此我们需要确保我们是正确的。否则,我们的程序可能无法正常工作。
类型断言显式地告诉编译器,我们希望将实体视为不同的类型。它允许我们把任何数字当作一个数字,或者把数字当作一个字符串。类型断言通常在我们将代码从JavaScript迁移到TypeScript时使用。
【TypeScript类型断言 –
TypeScript开发教程】类型断言的工作方式类似于类型转换,但它不像其他语言(如c#和Java)那样执行类型检查或数据重组。类型转换附带运行时支持,而类型断言对运行时没有影响。然而,类型断言纯粹是一个编译时构造,它为编译器提供关于我们希望如何分析代码的提示。
例子
let empCode: any = 111;
let employeeCode = <
number> code;
console.log(typeof(employeeCode));
// : number
在上面的例子中,我们已经声明了一个变量empCode任何类型的。下一行中,我们将这个变量的值分配给另一个变量命名employeeCode。在这里,我们知道empCode是数字类型,即使我们为any。当我们分配empCode给employeeCode,我们断言empCode类型是number,现在employeeCode的类型是数字。
TypeScript断言提供了两种方法类型。他们是
- 使用尖括号< >
- 使用关键字as
例子
let empCode: any = 111;
let employeeCode = <
number> code;
使用关键字asTypeScript提供了另一种通过使用“as”关键字来显示类型断言的方法。
例子
let empCode: any = 111;
let employeeCode = code as number;
带对象的类型断言有时,我们可能会遇到这样的情况:我们有一个没有任何属性声明的对象,对于这种情况,编译器会给出一个错误。但是,通过使用类型断言,我们可以避免这种情况。我们可以通过下面的例子来理解它。
例子
let student = { };
student.name = "Hola";
//Compiler Error: Property 'name' doesn?t exist on type '{}'
student.code = 123;
//Compiler Error: Property 'code' doesn?t exist on type '{}'
在上面的例子中,我们将得到一个编译错误,因为编译器假设student的类型是{},没有属性。我们可以通过使用类型断言来避免这种情况,如下所示。
interface Student {
name: string;
code: number;
}
let student = <
Student> { };
student.name = "Hola";
// OK
student.code = 123;
// OK
在上面的例子中,我们用属性name和code创建了一个Student接口。然后,我们对Student使用类型断言,这是使用类型断言的正确方式。
推荐阅读
- TypeScript数组用法和操作 – TypeScript开发教程
- TypeScript类型推断 – TypeScript开发教程
- TypeScript使用类型注解 – TypeScript开发教程
- TypeScript操作符全解 – TypeScript开发教程
- let和var关键字的区别 – TypeScript开发教程
- TypeScript使用变量 – TypeScript开发教程
- Null和Undefined之间的区别 – TypeScript开发教程
- TypeScript数据类型 – TypeScript开发教程
- 编写第一个TypeScript程序 – TypeScript开发教程