跳到主要内容

类型断言

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

TypeScript 中的类型断言简介

类型断言指示 TypeScript 编译器将值视为指定类型。 它使用 as 关键字来执行此操作:

expression as targetType

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

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

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

如果 formattrue,则 getNetPrice() 以字符串形式返回格式化的净价。 否则,它将以数字形式返回净价。

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

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

输出:

$95

同样,下面使用 as 关键字来指示编译器 getNetPrice() 函数的返回值是一个数字。

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

输出:

95

请注意,类型断言不进行任何类型转换。 它仅告诉编译器应将哪种类型应用于值以进行类型检查。

其他的类型断言语法

你还可以使用尖括号语法 <> 来断言类型,如下所示:

<targetType> value

例如:

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

请注意,不能对某些库(例如 React)使用尖括号语法 <>。 因此,你应该使用 as 关键字进行类型断言。

概括

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