Утверждение типа в 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 для утверждений типа.

Заключение

  • Утверждения типа в TypeScript предписывают компилятору обрабатывать значение как указанный тип.
  • Утверждения не несут никаких преобразований типов.
  • Для утверждения типа используют ключевое слово as или синтаксис угловой скобки <>.
Рейтинг
( Пока оценок нет )
Александр Русаков / автор статьи
Программист, разработчик, 12 лет опыта работы в крупных компаниях. Быстро освоил typescript, делюсь своими знаниями на страницах этого сайта.
Загрузка ...
JavaScript и TypeScript