#стрим дня
…который будет 6 сентября.
В общем, есть тип такой, Джейсон Ленсторф, он ведёт обучающие стримы по веб-технологиям.
И у него на стриме 6 сентябра будет создатель курсов по TypeScript, Мэтт Покок: https://www.learnwithjason.dev/advanced-typescript-let-s-learn-generics
Тема стрима — дженерики в TS. Без вопроса по дженерикам не обходится ни одно интервью.
Залетаем, смотрим, учимся.
#ts #generics
…который будет 6 сентября.
В общем, есть тип такой, Джейсон Ленсторф, он ведёт обучающие стримы по веб-технологиям.
И у него на стриме 6 сентябра будет создатель курсов по TypeScript, Мэтт Покок: https://www.learnwithjason.dev/advanced-typescript-let-s-learn-generics
Тема стрима — дженерики в TS. Без вопроса по дженерикам не обходится ни одно интервью.
Залетаем, смотрим, учимся.
#ts #generics
⚡2👍1
#тип дня
Вышел TypeScript 5.4.
А это что значит? Что у нас теперь есть служебный тип NoInfer.
Коротко, зачем он нужен: с его указанием TS больше не будет пытаться угадать тип передаваемого аргумента. Например, если не указать тип массива
Чтобы такого не происходило, есть два пути. Первый:
Ну такое, многословно и D больше нигде в коде не используется. Вот тут и приходит на помощь NoInfer:
Всё, тип массива определён как, практически, у константы ["red", "yellow", "green"] и передать "blue" уже не выйдет.
Естественно, улучшений и нововведений в TS 5.4 сильно больше, рекомендую прочитать заметки о выпуске: https://devblogs.microsoft.com/typescript/announcing-typescript-5-4/
#typescript #generics
Вышел 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/
#typescript #generics
👍20❤4