【发布时间】:2018-05-14 10:59:04
【问题描述】:
我有一个类 (Foo) 用于保存项目列表,所有项目的列表都继承自一个基类型 (IBar),这个列表可以包含任意数量的这些项目。
我遇到的问题是我试图在 Foo 上创建一个 get 方法,该方法采用仅限于从 IBar 继承的类型的泛型类型。
我目前拥有的接口和类是:
interface IBar {
bar : string;
}
interface IFizz extends IBar {
buzz : string;
}
class Foo {
get<T extends IBar>() : T {
var item = this.list[0];
return item;
}
list : Array<IBar>;
}
我尝试运行的代码是:
var foo = new Foo();
var item = foo.get<IFizz>();
我在上面知道列表是空的,但这更多是为了让 Typescript 编译器不显示错误。调用 foo.get 的行很好并且没有错误,问题是 get 方法本身。 我从上面得到的错误是“类型'IBar'不可分配给类型'T'”。
如果查看 C# 作为参考,上述方法会起作用(我相信),并且欢迎任何书面示例来帮助我解决这个问题。
谢谢
【问题讨论】:
标签: javascript typescript