Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Generics TypeScript中类型约束中的泛型错误_Generics_Typescript - Fatal编程技术网

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'