Доки по разработке
This project is maintained by teniryte
Принципы
printAnything<T>).extends) задают требования к параметру и открывают доступ к нужным свойствам или методам.keyof, infer, rest-кортежи, шаблонные литералы) делают типы выразительными и позволяют строить утилиты.Пример
interface Printable {
print(): void;
}
function printHousesOrCars<T extends Printable>(arr: T[]): void {
arr.forEach((item) => item.print());
}
class Queue<T> {
private data: T[] = [];
push(v: T) {
this.data.push(v);
}
pop(): T | undefined {
return this.data.shift();
}
}
Практика
extends Lengthy, extends keyof T).ConditionalReadOnly, Getters, ToArray), чтобы описать трансформации данных.infer для извлечения типов аргументов, возвращаемых значений, элементов массивов и кортежей.Endpoint<'/api/users/42'>), чтобы проверять корректность на этапе компиляции.