Доки по разработке
This project is maintained by teniryte
as const и константные утвержденияПринципы
as const превращает литералы в максимально узкие типы (значение вместо общего типа) и делает свойства readonly.as const превращает их в кортежи с фиксированной длиной и литеральными значениями.Пример
const args1 = [8, 5]; // number[]
const args2 = [8, 5] as const; // readonly [8, 5]
const obj = { foo: { bar: 42 } } as const;
// тип: { readonly foo: { readonly bar: 42 } }
Практика
as const для описания конфигураций, action-типов, таблиц маршрутов — избегайте разрастания union-типов.typeof для получения литеральных типов (type Action = typeof actions[number];).as const делает вложенные структуры только для литералов; для объектов, созданных функциями, потребуется дополнительная обработка.