В этом руководстве вы узнаете об утверждении типа в 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
для утверждений типа.
Заключение
- Утверждения типа в TypeScript предписывают компилятору обрабатывать значение как указанный тип.
- Утверждения не несут никаких преобразований типов.
- Для утверждения типа используют ключевое слово
as
или синтаксис угловой скобки<>
.