Typescript 'keyof InstanceType' 无法用于索引类型错误

2023-12-09

这是示例代码:

class Base {}

function fn<T extends typeof Base>(
    Cls: T,
    prop: keyof InstanceType<T>,
) {
    return (new Cls())[prop];
}

TS游乐场:https://www.typescriptlang.org/play?#code/MYGwhgzhAEBCkFNoG8C+AodAzArgO2ABcBLAez2izwB4AVaBAD0ITwBMZCBPABwVKxxEAPgAU6aJOgBhEBABc0WgBoJUngCdSPRQGsEXAdACSeCITAEEtXgjrDVAShRrJGhIRwaKovAgDuMnKijo4 A2praALoA3OgYQA

prop应该是一个属性Cls,但是这段代码不起作用?

如果我改变它就会起作用keyof InstanceType<T> to keyof Base,但我希望该函数可以与任何子类一起使用Base.


似乎 TypeScript 编译器在以下情况下反应很糟糕InstanceType用于泛型。

如果将泛型参数更改为实例类型,它就会起作用,这应该与原始代码等效:

function fn<T extends Base>(
    Cls: new () => T, 
    prop: keyof T
) {
    return new Cls()[prop];
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Typescript 'keyof InstanceType' 无法用于索引类型错误 的相关文章

随机推荐