我想把一个类传递给一个函数,并推断出该类的键,但它不起作用:
class Foo {
bar: string;
}
function foo<C>(comp: C, key: keyof C) {
}
foo(Foo, '') // expecting to get bar here, but I'm getting the prototype key
当我把它作为一个类型使用时,它起作用:
type Keys = keyof Foo;
有什么问题?
我想把一个类传递给一个函数,并推断出该类的键,但它不起作用:
class Foo {
bar: string;
}
function foo<C>(comp: C, key: keyof C) {
}
foo(Foo, '') // expecting to get bar here, but I'm getting the prototype key
当我把它作为一个类型使用时,它起作用:
type Keys = keyof Foo;
有什么问题?
2条答案
按热度按时间mzmfm0qo1#
首先,您需要为
bar
属性提供初始值设定项。其次,您正在传递类构造函数作为参数,并期望第二个为bar
。只有当您提供Foo
类的示例时,它才能为bar
。如果您要获取bar
,则需要使用InstanceType
实用程序类型,换句话说,从类示例而不是类构造函数获取键:nr9pn0ug2#
您已
因为Foo是一个类(即函数),而不是Foo类的示例