我有一个包含数组的类。
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
}
}
但未显示如何在类级别移动集合并保持其类型。
只需要提示正确的方向即可。
答案 0 :(得分:1)
您想要的是创建类generic,然后限制您的类方法使用该通用类型。
export const initialState = {
ids: [],
basket: [],
};
const reducer = (state = initialState, action) => {
switch (action.type) {
case "ADD_TO_BASKET":
if (state.ids.indexOf(action.item.id) === -1) {
...
} else {
...
const basketsShallowCopy = [...state.basket];
const basketToUpdate = basketsShallowCopy.pop();
const updatedBasked = {
...baskedToUpdate,
quantity: basketToUpdate.quantity + 1,
};
basketsShallowCopy.push(updatedBasked);
return {
...state,
basket: basketsShallowCopy,
};
}
...
}
};
使用该类时,您可以指定要使用的类型
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