LoaderInterface
:
// tslint:disable-next-line:no-empty-interface
export interface LoaderOptions { }
export interface LoaderInterface {
load(options: LoaderOptions): Object;
}
export interface SimpleLoaderOptions extends LoaderOptions {
option1: string;
}
export interface AdvancedLoaderOptions extends LoaderOptions {
option2: string;
}
MyModule
入口点应接受两个选项:
-
loader
这是一个例子
装载机接口
(混凝土等级)
-
options
我的问题是我不知道如何在两个选项之间建立“连接”。
如果
装载机
是这个吗,比
选项
应该是这个样子
. 可能吗?
解决方法1:愚蠢,因为一个人可以把任何东西传给别人
class MyModule {
static create(loader: LoaderInterface, options: any) { }
}
解决方法二:也很傻,因为允许任何物体的形状
LoaderOptions
(基本上,什么都可以):
class MyModule {
static create(loader: LoaderInterface, options: LoaderOptions) { }
}
MyModule.create(new SimpleLoader, { foo: 'bar' })
class MyModule {
static create(loader: LoaderInterface, options: SimpleLoaderOptions
| AdvancedLoaderOptions) { }
}
MyModule.create(new SimpleLoader, { option1: 'foo', option2: 'bar' })