Typescript 'T' 不能用于索引类型?但是 T 是 "keyof" 目标类型

Typescript 'T' cannot be used to index type? But T is "keyof" target type


type foo = {
    asd:""
}

interface FOOS<T = keyof foo> extends foo {
    copy(key: T): foo[T]// error
}

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

如何告诉打字稿这个 T 可以用作该类型的键?

您的泛型类型的 默认 keyof foo,但有人仍然可以使用任何不相关的类型实例化它:FOOS<string>, FOOS<unknown>

尝试对 T 设置限制:

interface FOOS<T extends keyof foo= keyof foo> extends foo {
    copy(key: T): foo[T]// error
}