#typescript
Вопрос:
Я пытаюсь получить вывод типа ключа во вложенном объекте. Возьмем этот пример:
type D = {
[key: string]: Record<string, unknown>;
}
function isNested<T extends D>(obj: T, key: keyof (T[keyof T])) {}
const testObj: D = {
first: {
second: { isNested: true }
}
}
isNested(testObj, 'first');
В этом сценарии я ожидал бы, что isNested(testObj, 'first')
выдаст ошибку, потому что она не относится к типу keyof (T[keyof T])
.
Как мне ограничить приведенный выше пример, чтобы разрешить только строку second
в качестве второго параметра, если нет keyof (T[keyof T])
?
Изменить: ссылка на игровую площадку
Комментарии:
1. Путем аннотирования
testObj
, какD
вы явно сказали компилятору, чтобы он рассматривал его какD
, а не какой-либо более конкретный тип, который был у инициализатора. Можете ли вы удалить аннотацию и просто написатьconst testObj = {...}
безD
нее ? Если нет, то почему?