【发布时间】:2020-10-01 06:07:51
【问题描述】:
问题:
是否有可能在 1 个重载中有多个 extends key of 之类的东西?
我想做的事:
this.form.get("data.subdata").value
这将返回一个类型化的数据。目前它返回unknown
到目前为止我做了什么
我正在以这种方式创建类型化表单控件
this.form.get("data").get("subdata").value
这行得通,但如果可能的话,我不想使用多次获取。
我的班级如下:
export class TypedFormControl<T = any> extends FormControl {
readonly valueChanges: Observable<T>;
readonly value: T;
setValue(value: T, options?: Object) {
FormControl.prototype.setValue.call(this, value, options);
}
get<K extends keyof T>(path: K): TypedAbstractControl<T[K]>;
get<S>(path: (string | number)[] | string): TypedAbstractControl<S>;
get(path: (string | number)[] | string): TypedAbstractControl<any> {
return FormControl.prototype.get.call(this, path);
}
}
我本来想做这样的事情,但它肯定不喜欢它。
get<J extends keyof K extends keyof T>(path: K.J): TypedAbstractControl<T[K]>;
更新:我认为这次尝试更接近,但它仍然抱怨 J 不能成为 K 的索引 :(
get<J extends keyof K, K extends keyof T>(path: [K, J]): TypedAbstractControl<T[K][J]>;
我会很感激任何帮助,我在网上寻找了一段时间无济于事。
干杯
【问题讨论】:
标签: typescript types overloading