// *** before: ***
// хвост кортежа переменной длины нельзя было описать типом кортежа,
// приходилось переходить на массив и терять типы головных элементов
type Args = [string, ...any[]];
// *** in version 3.0: ***
type StringNumberBooleans = [string, number, ...boolean[]];
const a: StringNumberBooleans = ["hello", 1, true, false, true];
// a[0] - string, a[1] - number, a[2] и далее - boolean