我创建了一个类:
export class TreeClient<T extends TreeItem, K extends keyof T> {
// ...
}
这个类有以下方法:
public setNodeProperty(nodeId: string, property: K, setter: (_value: T[K]) => T[K]): void{
// ...
}
我试图用一个只有一个泛型的类来扩展这个类,如下所示:
export class DashboardBuilderClient<T extends TreeItem> extends TreeClient<T, keyof T> {
constructor() {
super();
}
}
但是一旦我尝试打电话:
const x = new DashboardBuilderClient<SomeType>();
x.setNodeProperty(nodeId, property, setter);
我得到错误:
Argument of type '(_value: T[K]) => T[K]' is not assignable to parameter of type '(_value: T[keyof T]) => T[keyof T]'.
我理解这个错误是由于将第二个泛型设置为keyof T
而不是类似的东西引起的,K extends keyof T
但是是否可以只为包装类使用一个泛型以避免重复?