Почему keyof IItem возвращает string | number?

Довольно специфичное поведение, которое я никак не могу побороть...

interface IItem {
    [key: string]: string;
}

type t = keyof IItem; // string | number

введите сюда описание изображения


Ответы (1 шт):

Автор решения: Taicutsun

В JavaScript, даже если ты используешь число в качестве ключа объекта (например, obj[0]), оно автоматически преобразуется в строку ("0"). Поэтому TypeScript учитывает это и предполагает, что ключом может быть как строка, так и число.

→ Ссылка