Здравствуйте, vdimas, Вы писали:
V>>>Статья от 2018-го.
I>>С разморозкой — нынче сентябрь 2021.
I>>Ты бы роадмап глянул? 2018й это выход 3.0. На сегодня актуальна 4.4
V>Это всё копейки и на суть обсуждаемого в той статье не влияет.
Это влияет на твоё утверждение "TypeScript с тех пор практически не изменился"
Изменился и очень сильно, благодаря чему переход на TypeScript теперь норма.
Основные претензии JS разработчиков были в том, что:
1 типы добавляют много дополнительного кода. Собственно, именно это препятствие теперь устранено благодаря улучшеному выводу типа и всяким плюшкам вокруг него построеным, type narrowing, control flow analysis и тд.
2 перформанс компилятора — улучшился в разы
3 слабоватая поддержка редакторами — compiles services теперь адекватные, навигация, рефакторинг, интеллисенс теперь заруливают любой жээс редактор.
Вот история версий, кликаешь в каждую с сегодняшнего дня и до 18го года, т.е. до 3.3
https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-4.html
V>Особенно "более лучший вывод типов" и "туплы-генерики".
Туплы-генерики это крайне полезная фича:
type Parameters<T extends (...args: any) => any> = T extends (...args: infer P) => any ? P : never;
function x(a: string, b: number) {
...
}
type Params = Parameters<x>; // [string, number]
Здесь кроме infer есть conditional type. С помощью этой вещи можно объявить, например, какой нибудь хитрый рекурсивный тип, где у чилдренов правила могут меняться в зависимости от контекста. А можно сделать парсинг типа, примерно так
http://rsdn.org/forum/philosophy/7967480.1Автор: Ikemefula
Дата: 09.03.21
Вот еще:
type Readonly<T> = {
readonly [P in keyof T]: T[P];
};
// теперь просто так не получится изменить x.
Таких комбинаторы крайне полезные!