Skip to content
On this page

Type Assertions

摘要:在本教程中,你将学习 TypeScript 中的类型断言。

TypeScript 中的类型断言介绍

类型断言指示 TypeScript 编译器将一个值作为一个指定的类型。它使用 as 关键字来做到这一点。

ts
expression as targetType

类型断言也称为类型缩小。它允许你从联合类型中缩小类型。让我们看下面这个简单的函数:

ts
function getNetPrice(price: number, discount: number, format: boolean): number | string {
    let netPrice = price * (1 - discount);
    return format ? `${netPrice}` : netPrice;
}

getNetPrice() 函数接受 pricediscountformat 参数,并返回一个 number | string 的联合类型的值。

如果 formattruegetNetPrice() 返回一个格式化的字符串净价。否则,它返回净价为一个数字。

下面使用 as 关键字来指示编译器,分配给 netPrice 的值是一个字符串:

ts
let netPrice = getNetPrice(100, 0.05, true) as string;
console.log(netPrice);

输出:

ts
$95

类似地,下面使用 as 关键字来指示编译器,getNetPrice() 函数的返回值是一个数字:

ts
let netPrice = getNetPrice(100, 0.05, false) as number;
console.log(netPrice);

输出:

ts
95

请注意,一个类型断言并不带有任何类型转换。它只是告诉编译器应该将哪种类型应用于值,以进行类型检查。

另一种类型断言语法

你也可以使用尖括号语法<>来断言一个类型,像这样:

ts
<targetType> value

例如:

ts
let netPrice = <number>getNetPrice(100, 0.05, false);

注意,你不能在某些库中使用尖括号语法 <>,例如 React。出于这个原因,你应该使用 as 关键字进行类型断言。

总结

  • 类型断言指示编译器将一个值视为指定的类型。
  • 类型断言不进行任何类型转换。
  • 类型断言使用 as 关键字或尖括号 <> 语法。