Dev Highlights

Доки по разработке

This project is maintained by teniryte

Rest-элементы и дженерики

Принципы

Пример

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);
}

Практика