类型断言
摘要:在本教程中,你将了解 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()
函数接受 price
、discount
和 format
参数,并返回 number | string
的联合类型。
如果 format
为 true
,则 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
关键字或尖括号<>
语法。