TypeScript类型断言

TypeScript类型断言

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

类型断言明确告诉编译器我们要将实体视为不同的类型。它允许我们将 any 视为数字或将数字视为字符串。当我们从 JavaScript 迁移到 TypeScript 时,通常会使用类型断言。

类型断言类似于类型转换,但它不执行类型检查或数据重构,就像其他语言如 C# 和 Java 可以做的那样。类型转换具有运行时支持,而类型断言对运行时没有影响。但是,类型断言纯粹是一个编译时构造,并向编译器提供有关我们希望分析代码的方式的提示。

示例

let empCode: any = 111; 
let employeeCode =  code; 
console.log(typeof(employeeCode)); //Output: number

在上面的示例中,我们声明了类型为 any 的变量 empCode。在下一行中,我们将此变量的值分配给另一个名为 employeeCode 的变量。在这里,我们知道 empCode 是数字类型,即使我们将其声明为 ‘any’类型。当我们将 empCode 分配给 employeeCode 时,我们断言 empCode 是数字类型。现在 employeeCode 的类型是数字。

TypeScript 提供了两种类型断言的方法。它们是

  1. 使用角括号<>
  2. 使用关键字 as

使用角括号<>

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

示例

let empCode: any = 111; 
let employeeCode =  code; 

使用关键字 as

TypeScript 提供了另一种使用 ” as ” 关键字显示类型断言的方法。

示例

let empCode: any = 111; 
let employeeCode = code as number; 

对象类型断言

有时,我们可能会遇到一个没有声明任何属性的对象。此时编译器会报错。但是,通过使用类型断言,我们可以避免这种情况。我们可以通过以下示例理解它。

示例

let student = { };
student.name = "Rohit"; //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.name = "Rohit"; // Correct
student.code = 123; // Correct

在上面的示例中,我们创建了一个接口 Student,其中包含属性namecode。然后,我们对学生进行了类型断言,这是使用类型断言的正确方法。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程