В этом руководстве вы узнаете об утверждении типа в 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или синтаксис угловой скобки<>.
