我不确定我做错了,或者这是不是设计......
在我班上
class List<T> { ... }
我有一个方法
public Add(value: T): void { ... }
我创建了一个列表实例
const fooList: List<foo> = new List<foo>();
但现在我仍然可以
fooList.Add(new bar());
foo和bar是不相关的类型。这不会触发编译器警告,我对此有点迟疑。
我做错了,还是按预期进行?
答案 0 :(得分:1)
我做错了,还是按预期进行?
如果类型兼容,则允许例如
class List<T> {
add(val: T) { }
}
class Animal { name: string; }
class Cat extends Animal { meow() { } }
const animals = new List<Animal>();
animals.add(new Animal()); // Okay
animals.add(new Cat()); // Okay
const cats = new List<Cat>();
cats.add(new Animal()); // Error