我有一个包含数组的类。
let object=new DynamicARRAY()
object.add(12)
object.add("google") // This should not allowed
let object=new DynamicARRAY()
object.add("google")
object.add(12) // This should not allowed
一旦我设置了数组的类型,它如何维护该数组的类型。
我有类似的东西
class DynamicArray {
add(value:string):Array<number>
add(value:number):Array<string>
add<T>(value:T):Array<T> {
let collection = new Array<T>()
collection.push(value)
return collection
}
}
但没有显示我如何在类级别移动集合并保持其类型。
只需要提示正确的方向。
最佳答案
你想要的是让你的类(class) generic然后限制您的类方法使用该泛型类型。
class DynamicArray<T> {
add(value:T):Array<T> {
let collection = new Array<T>()
collection.push(value)
return collection
}
}
使用类时,您指定它将保存什么类型
const array = new DynamicArray<string>();
array.add('foo');
array.add(12); // will fail
我能想到的拥有通用入口点的唯一方法是实例化通用类型类的静态类。
class TypedArray<T> {
private items: T[] = [];
add(value: T): this {
this.items.push(value);
return this;
}
}
class DynamicArray {
static add<T>(value:T): TypedArray<T> {
let collection = new TypedArray<T>()
collection.add(value);
return collection
}
}
const array = DynamicArray.add('foo');
array.add('bar');
array.add(12); // fails
关于arrays - 在 typescript 中将动态类型定义为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63829407/