Обычно мы можем пропустить аннотацию типа, потому что знаем, что typescript выведет тип за нас.
но оказалось, что аннотация типа или без нее действительно имеет значение.
const a = 'a' // 'a'
// ^?
const c = [a] // string[]
// ^?
const a1 = 'a' as const // 'a'
// ^?
const c1 = [a1] // 'a'[]
// ^?
const a2:'a' = 'a' // 'a'
// ^?
const c2 = [a2] // 'a'[]
// ^?
обратите внимание, что c — это string[]
, а c2 и c3 — 'a'[]
игровая площадка
это работает как задумано, читайте объяснение здесь