TypeScript 中的类型断言是什么?

typescriptserver side programmingprogramming更新于 2025/10/10 0:07:17

类型断言是 TypeScript 中的一种机制,用于告知编译器变量的类型。如果 TypeScript 发现赋值错误,我们可以使用类型断言覆盖该类型。我们必须确保赋值正确,因为使用类型断言时赋值始终有效。否则,程序可能无法正常运行。

以声明的方式告知编译器我们打算将该项视为一个独特类型,这称为类型断言。使用这种方法,我们可以将 any 视为数字,或将数字视为字符串。将代码从 JavaScript 迁移到 TypeScript 时,经常使用类型断言。

类型断言的功能类似于类型转换,但与 C# 和 Java 不同,它不进行类型验证或数据重排。类型转换支持运行时,但类型断言不会影响运行时。类型断言仅仅是一个编译时构造,用于指示编译器我们希望如何检查代码。

在本教程中,我们将学习如何使用类型断言来告诉编译器将值视为指定类型。

如何进行类型断言?

类型断言是一种 TypeScript 技术,它告诉编译器变量的类型。虽然类型断言不会重新创建代码,但类型转换会。您可以使用类型断言告诉编译器不要推断值的类型。我们利用类型断言将变量从一种类型转换为另一种类型,例如将 any 转换为数字。

要进行类型断言,我们可以使用"<>"运算符或"as"运算符。类型转换提供运行时支持,而类型断言对运行时没有影响。

在 TypeScript 中执行类型断言有三种技术,分别是:

  • 使用"as"运算符

  • 使用"<>"运算符

  • 使用 object

使用"as"运算符进行类型断言

TypeScript 中的"as"关键字提供了一种显示类型断言的方法。

语法

let variable_any: any = 123
let variable_number: number = variable_any as number

在上述语法中,我们对任何类型变量使用了"as"关键字进行类型断言。

示例

在下面的示例中,我们使用了"as"运算符进行类型断言。我们获取了一个值为"Tutorialspoint"的未知类型变量。我们使用"as"关键字告诉编译器将该变量视为字符串,并使用了该字符串的 length 属性。

let variable_unknown: unknown = "Tutorialspoint";
console.log("variable_unknown value is: ", variable_unknown);
let variable_number: number = (variable_unknown as string).length;
console.log("Length of variable_unknown: ", variable_number);

编译后,它将生成以下 JavaScript 代码 -

var variable_unknown = "Tutorialspoint";
console.log("variable_unknown value is: ", variable_unknown);
var variable_number = variable_unknown.length;
console.log("Length of variable_unknown: ", variable_number);

输出

上述代码将产生以下输出 -

variable_unknown value is: Tutorialspoint
Length of variable_unknown: 14

使用"<>"运算符进行类型断言

"<>"运算符是 TypeScript 中执行类型断言的另一种方法。

语法

let Variable_any: any = 123
let Variable_number: number = <number> Variable_any

在上面的语法中,我们对任意类型变量使用了"<>"运算符进行类型断言。

示例

在下面的示例中,我们使用了"<>"运算符进行类型断言。我们获取了一个值为 12345 的未知类型变量。我们使用"<>"关键字告诉编译器将该变量视为数字,并将其存储在另一个数字类型的变量中。我们还检查了第二个变量的类型以验证其类型。

let my_number: unknown = 12345
console.log('my_number value is: ', my_number)
let num: number = <number>my_number
console.log('typeof num is: ', typeof num)

编译后,它将生成以下 JavaScript 代码 -

var my_number = 12345;
console.log('my_number value is: ', my_number);
var num = my_number;
console.log('typeof num is: ', typeof num);

输出

上述代码将产生以下输出 -

my_number value is: 12345
typeof num is: number

使用"Object"进行类型断言

与"as"和"<>"运算符不同,对象是执行类型断言的另一种方式;对象可以同时用于多个类型断言。

语法

interface info {
   name: string,
   value: string
}
let my_obj = <info> { name: 'ABC', value: 'abc'}

在上述语法中,我们使用对象执行类型断言。

示例

在下面的示例中,我们使用对象进行类型断言。我们获取一个对象,并将每个键设置为单独的类型,因此每当用户向其添加值时,它将自动转换为给定类型的值或抛出错误。my_obj 使用一个名为 info 的接口,该接口包含这些类型,我们还会在控制台中记录 my_obj 以查看实际结果。

interface info {
   name: string
   value: string
}
let my_obj = <info>{}
my_obj.name = 'Tutorialspoint'
my_obj.value = 'typescript'
console.log(my_obj)

编译后,它将生成以下 JavaScript 代码 -

var my_obj = {};
my_obj.name = 'Tutorialspoint';
my_obj.value = 'typescript';
console.log(my_obj);

输出

上述代码将产生以下输出 -

{ name: 'Tutorialspoint', value: 'typescript' }

相关文章