是否可以使用数据类型而不是any
,这是这样的模块的一部分:
module SomeModule {
export class One {
// ...
}
export class Two {
// ...
}
// ...
}
我需要这样的东西:
function bla(myModel: anyThingInsideModule_insteadOfAnyDataType){...}
这可能吗?
答案 0 :(得分:1)
不,但您可以让他们实现/扩展基础接口/类:
module SomeModule {
export interface Base { }
export class One implements Base { }
export class Two implements Base { }
}
function bla(myModel: SomeModule.Base) { }
或者:
module SomeModule {
export abstract class Base { }
export class One extends Base { }
export class Two extends Base { }
}
您还可以使该功能通用:
function bla<T extends SomeModule.Base>(myModel: T) { }
答案 1 :(得分:1)
在TypeScript 2.0中,您可以为参数甚至变量指定多种可能的数据类型:
function bla (myModel: One | Two)
然后你可以使用任何一种类型的参数。
修改强>
在SomeModel非常大的情况下,如下面的评论所示(显然是100多个类,我认为这是糟糕的设计,但是嘿,我还没有评判),最简单的方法就是创建一个{{ 1}} abstract
中的基类,并且模型中的每个类都来自于它。
SomeModel
然后你可以写
export abstract class MyModelClass { /* Any shared logic here */ }
export class One extends MyModelClass { ... }
export class Two extends MyModelClass { ... }
...