Машинописный текст «T» нельзя использовать для индексирования типа? Но T-это целевой тип «keyof»

#typescript #typescript-typings #typescript-generics

Вопрос:

  type foo = {  asd:"" }  interface FOOSlt;T = keyof foogt; extends foo {  copy(key: T): foo[T]// error }   

Type 'T' cannot be used to index type 'foo'.

Как я могу сообщить typescript, что это T можно использовать в качестве ключа для этого типа?

Ответ №1:

Ваш универсальный тип имеет значение по умолчанию keyof foo , но кто-то все равно может создать его экземпляр с любым несвязанным типом: и т.д. FOOSlt;stringgt;, FOOSlt;unknowngt;

Попробуйте наложить ограничение на T :

 interface FOOSlt;T extends keyof foo= keyof foogt; extends foo {  copy(key: T): foo[T]// error }