Generics TypeScript中类型约束中的泛型错误
我创建了一个简短的示例代码来演示我面临的问题:Generics TypeScript中类型约束中的泛型错误,generics,typescript,Generics,Typescript,我创建了一个简短的示例代码来演示我面临的问题: class List<T> { } class StringList extends List<string> { } class NumberList extends List<number> { } class Iterator<T extends List<any>> { list: T; constructor() { this.list =
class List<T> { }
class StringList extends List<string> { }
class NumberList extends List<number> { }
class Iterator<T extends List<any>> {
list: T;
constructor() {
this.list = new StringList();
}
}
您希望迭代器具有类型为list的列表,但该迭代器试图将列表分配给它。这是一个错误,因为它是错误的:
class MagicList extends StringList {
magic = 'shazam';
}
var x = new Iterator<MagicList>();
console.log(x.list.magic); // x.list does not have member 'magic'
class MagicList扩展了StringList{
魔法=‘沙扎姆’;
}
var x=新迭代器();
console.log(x.list.magic);//x、 列表中没有成员“magic”
记住,约束只会在泛型类型上建立一个下限。是的,这很明显哈?现在我觉得自己很迟钝。你的例子并没有完全正确(有一件事你没有把
magic
放在列表成员上,只是添加了一个成员,所以你有x.magic
),但我抓住了重点,用一个例子编辑了我的问题。谢谢
class MagicList extends StringList {
magic = 'shazam';
}
var x = new Iterator<MagicList>();
console.log(x.list.magic); // x.list does not have member 'magic'