新版本的变更 / TypeScript 3.0

// *** before: ***
// хвост кортежа переменной длины нельзя было описать типом кортежа,
// приходилось переходить на массив и терять типы головных элементов
type Args = [string, ...any[]];

// *** in version 3.0: ***
type StringNumberBooleans = [stringnumber, ...boolean[]];
const a: StringNumberBooleans = ["hello"1truefalsetrue];
// a[0] - string, a[1] - number, a[2] и далее - boolean