个性化阅读
专注于IT技术分析

TypeScript类型断言 – TypeScript开发教程

上一章TypeScript教程请查看:TypeScript类型推断

在TypeScript中,类型断言是一种告诉编译器变量类型的机制。当TypeScript确定赋值无效时,我们可以使用类型断言覆盖类型。如果我们使用类型断言,那么赋值总是有效的,因此我们需要确保我们是正确的。否则,我们的程序可能无法正常工作。

类型断言显式地告诉编译器,我们希望将实体视为不同的类型。它允许我们把任何数字当作一个数字,或者把数字当作一个字符串。类型断言通常在我们将代码从JavaScript迁移到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

使用尖括号<>

在TypeScript中,我们可以使用角“括号< >”显示类型声明。

例子

let empCode: any = 111;   
let employeeCode = <number> code;   

使用关键字as

TypeScript提供了另一种通过使用“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使用类型断言,这是使用类型断言的正确方式。

赞(0)
未经允许不得转载:srcmini » TypeScript类型断言 – TypeScript开发教程

评论 抢沙发

评论前必须登录!