下面的代码:
class Base {
protected collection: ICollection<object>
public constructor(collection: ICollection<object>) {
this.collection = collection
}
}
class Child extends Base {
public constructor(collection: ICollection<User>) {
super(collection)
}
private foo(): void {
// working with collection
}
}
尽管我在构造函数(User)中指定了集合项的具体类型,但是当我在foo()
中处理集合时,typescript认为我仍然在处理ICollection<object>
类型的集合,而不是ICollection<User>
。
const _collection = this.collection as ICollection<User>
但是在每个方法中都这样做显然是个坏主意。我如何在Child
类中指定属性collection
是ICollection<User>
类型?或者我应该简单地覆盖基类的属性?这似乎也不是个好主意
1条答案
按热度按时间9wbgstp71#
利用类型参数的可能解决方案: