首页 > 解决方案 > 打字稿'T'不能用于索引类型?但是 T 是“keyof”目标类型

问题描述


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'.

我如何告诉 typescript 这个 T 可以用作该类型的键?

标签: typescripttypescript-typingstypescript-generics

解决方案


您的泛型类型的默认值为keyof foo,但有人仍然可以使用任何不相关的类型对其进行实例化:FOOS<string>, FOOS<unknown>等等。

尝试限制T

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

推荐阅读