Доки по разработке
This project is maintained by teniryte
Принципы
[name: string, ...things: T]) позволяет сочетать фиксированную часть и вариативный хвост.T extends unknown[] гарантируют, что дополнение — это массив определённого типа.function logThings<T extends unknown[]>(name: string, ...things: T)).Пример
type NameAndThings<T extends unknown[]> = [name: string, ...things: T];
let bobScores: NameAndThings<number[]>;
bobScores = ['Bob', 4, 9, 3];
type Grade = 'A' | 'B' | 'C';
type NameAndGrades = NameAndThings<Grade[]>;
const bobGrades: NameAndGrades = ['Bob', 'A', 'B', 'C'];
function logThings<T extends unknown[]>(name: string, ...things: T) {
console.log(name, things);
}
Практика
['command', ...args]) или событий.type Grade = 'A' | 'B' | 'C'), чтобы ограничить допустимые значения.things — TypeScript сохранит точные типы.