// *** before: ***
function getNames<T extends string>(arr: T[]) {
return arr;
}
const namesWidened = getNames(["a", "b"]); // выведен string[], литералы
//потеряны
function needsAsConst<T extends readonly string[]>(arr: T) { return arr; }
const namesAsConst = needsAsConst(["a", "b"] as const); // as const нужно было
//руками
// *** in version 5.0: ***
function getNamesConst<const T extends string[]>(arr: T) {
return arr;
}
const namesLiteral = getNamesConst(["a", "b"]);
// namesLiteral: readonly ["a", "b"] - без ручного as const на вызове