情况如下:
interface IValue {a:string}
interface IFactory<T> { make():T }
class Factory{
make(): IValue { return {a: 'a'}; }
}
const b = function<T extends IValue>(factory?: IFactory<T>): T {
return factory.make() || new Factory().make(); // marked as invalid
// With error:TS2322:Type 'IValue' is not assignable to type 'T'.
};
b
函数可选择接受值工厂,否则将默认生成。这是我拥有的更复杂代码的简化示例。
我知道 IValue != T (T
作为 的子项出现IValue
),但是我应该如何进行协调,以期望不仅与 IValue 的子项一起工作,而且包括确切的 IValue 类型本身?