【发布时间】:2018-01-15 00:29:25
【问题描述】:
我有一个问题会在控制台上产生这些错误。
Type 'WebFieldB' does not satisfy the constraint 'WebFieldA & WebFieldB'.
服务器生成了2个类,不应该改变。
class WebFieldA {
readonly Name: string;
readonly IsUpdatable: boolean;
}
class WebFieldB {
readonly Name: string;
}
这是我的代码:
interface IFieldInfo {
name: string;
isUpdatable: boolean;
}
class SomeField<T extends WebFieldA & WebFieldB> implements IFieldInfo {
field: T;
constructor(pField: T) {
this.field = pField;
}
get name(): string {
return this.field.Name;
};
get isUpdatable(): boolean {
return this.field.IsUpdatable || false;
}
}
let field1: IFieldInfo = new SomeField<WebFieldA>({Name: 'fieldA', IsUpdatable: false});
let field2: IFieldInfo = new SomeField<WebFieldB>({Name: 'fieldB'}); **// Here for WebFieldB is error**
let myCollection: Array<IFieldInfo> = [field1, field2];
我期待什么?
我想要一个由两种类型的对象构建的IFieldInfo 集合:WebFieldA 和WebFieldB(WFB 没有isUpdatable 属性!)。不幸的是,我只能修改我的代码,而不是 WebFieldA 或 WebFieldB。
也许还有另一个想法,在没有泛型的情况下做到这一点?我不知道...
【问题讨论】:
标签: typescript generics interface polymorphism