[英]Define Dynamic type to array in typescript
我有一个包含数组的类。
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 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.