【发布时间】:2018-02-19 18:50:09
【问题描述】:
大家好,我有这个问题
我正在创建一个我只想与约束一起使用的服务
为此我有一个界面
abstract class Base {
}
class ModelFromBase extends Base {
}
interface IService<T extends Base> {
doSomething(model: T);
}
以及实现接口的这个类
class ModelNotFromBase {
}
class Services<ModelNotFromBase> implements IService<ModelNotFromBase> {
doSomething(model: T) {}
}
问题在于 ModelNotFromBase 没有扩展 Base(顾名思义),并且 TS 编译器不会对此大喊大叫。
当我创建一个 IService 实例时
private _instance: IService<ModelNotFromBase>;
同样的问题,我的意思是我可以在那里提供任何东西。
那么这里有什么问题,
如文档所示,您可以使用约束
https://www.typescriptlang.org/docs/handbook/generics.html
我有什么遗漏的吗?还是我的做法不对?
【问题讨论】:
-
你的样本没有编译,
ITemplatingService是IService?ModelNotFromBase用作Services的类型参数,它也是一个类吗?你能把Base和ModelNotFromBase的代码贴出来吗? -
啊抱歉,我现在就解决这个问题.. 是的,ITemplatingService 是 IService。所以我有 Base 这只是一个标记,界面应该只适用于扩展 Base ex ModelFromBase .. 但正如你所看到的,我有 ModelNotFromBase 可以使用
标签: typescript