【发布时间】:2017-12-28 21:43:01
【问题描述】:
export class Module {
static register<T>(provider: Array<Provider>): ModuleWithProviders {
return {
ngModule: T, // error type is being used as value
providers: provider
};
}
我想要类似Module.register<AboutModule>([AboutService]) 这样的东西,它告诉模块和提供者向该模块注册,但我不知道如何使用打字稿泛型来做到这一点
谁能帮我解决这个问题。
还有什么应该是只接受类型而不接受其他类型的参数类型。假设我想要一个只接受类类型的参数。
stats(list: ClassType){} // something like this
stats(list: any){} // currently im using this, how should I restrict param only to types.
非常感谢任何帮助。
【问题讨论】:
-
为什么不让它
(klass: typeof T, provider: Array<Provider>)?然后你称它为.register(AboutModule, [AboutService]),T是从第一个参数推断出来的。 -
@jonrsharpe 当我使用 klass: typeof T 它的抛出错误仅称为类型但用作值
-
你还需要
ngModule: klass,而不是T。 -
@jonrsharpe static register
(klass: typeof T, provider: Array ): ModuleWithProviders { return { ngModule: klass, providers: provider }; } 但我仍然收到错误。我在 kclass 收到此错误:typeof T line
标签: angular typescript