这是我拥有的 Typescript 接口/类结构:
interface IBaseOptions {
homeUrl: string;
}
abstract class BaseApp<TOptions extends IBaseOptions = IBaseOptions> {
constructor(
private options: TOptions
) {
// does nothing
}
}
// -----------------------------
interface ICalls {
getValue: () => number;
}
interface IOptions<TCalls extends ICalls = ICalls> extends IBaseOptions {
calls: TCalls;
}
class App<TOptions extends IOptions<TCalls> = IOptions<TCalls>, TCalls extends ICalls = ICalls> extends BaseApp<TOptions> {
-------- (ts2744 error here)
constructor(options: TOptions) {
super(options);
}
}
class SubApp extends App {
// whatever implementation
}
我想提供默认值,以便我没有为我的选项和调用提供具体类型。我定义类型的方式会导致编译错误(ts2744 错误)。
我还想避免交换我的泛型类型(带有约束和默认值),以便我将第一个泛型类型保留为选项并调用第二个。
有没有办法首先定义带有约束的泛型类型,然后设置它们的默认值?
你可以检查这个游乐场链接