Топ-100
Создать акаунт
NULLTOP » Статьи » Свой сайт » Вышел TypeScript 5.4

Вышел TypeScript 5.4

18 авг 2024, 23:30
3
0

!!! Создайте резервную копию сайта перед любыми манипуляциями !!!

Вышел TypeScript 5.4 

А это что значит? Что у нас теперь есть служебный тип NoInfer.

Коротко, зачем он нужен: с его указанием TS больше не будет пытаться угадать тип передаваемого аргумента. Например, если не указать тип массива

["red", "yellow", "green"]

, TS определит его как

string[]

и разрешит запихнуть туда значение

"blue"

или, что хуже, позволить вашему коду попытаться, например, это самое значение в нём найти:


function createStreetLight<C extends string>(colors: C[], defaultColor?: C) {
    // ...
}

createStreetLight(["red", "yellow", "green"], "blue");



Чтобы такого не происходило, есть два пути. Первый:


function createStreetLight<C extends string, D extends C>(colors: C[], defaultColor?: D) {
}

createStreetLight(["red", "yellow", "green"], "blue");
//                                            ~~~~~~
// error!
// Argument of type '"blue"' is not assignable to parameter of type '"red" | "yellow" | "green" | undefined'.



Ну такое, многословно и D больше нигде в коде не используется. Вот тут и приходит на помощь NoInfer:


function createStreetLight<C extends string>(colors: C[], defaultColor?: NoInfer<C>) {
    // ...
}

createStreetLight(["red", "yellow", "green"], "blue");
//                                            ~~~~~~
// error!
// Argument of type '"blue"' is not assignable to parameter of type '"red" | "yellow" | "green" | undefined'.



Всё, тип массива определён как, практически, у константы ["red", "yellow", "green"] и передать "blue" уже не выйдет.

Естественно, улучшений и нововведений в TS 5.4 сильно больше, рекомендую прочитать заметки о выпуске: https://devblogs.microsoft.com/typescript/announcing-typescript-5-4/


Источник:

Все материалы, представленные на сайте, носят исключительно ознакомительный характер!

Нашли ошибку в тексте на сайте? Помогите нам ее исправить! Выделите ошибку и нажмите одновременно клавиши «Ctrl» и «Enter». Мы узнаем о неточности и как можно скорее исправим )

Если ссылка битая, пожалуйста сообщите нам через форму комментариев или в ЛС

Комментарии
  • Смайлы и люди
    Животные и природа
    Еда и напитки
    Активность
    Путешествия и места
    Предметы
    Символы
    Флаги
Кликните на изображение чтобы обновить код, если он неразборчив

Смотрите также: