【发布时间】:2022-01-21 18:02:40
【问题描述】:
下面是从我正在开发的 Redux 减速器中提取的一些 TypeScript 代码的片段。它有效,但它肯定是冗长的。必须有更好的方法来做到这一点,对吧?
switch (iterationNum) {
case 1:
state.iteration1Result = action.payload;
break;
case 2:
state.iteration2Result = action.payload;
break;
case 3:
state.iteration3Result = action.payload;
break;
case 4:
state.iteration4Result = action.payload;
break;
case 5:
state.iteration5Result = action.payload;
break;
case 6:
state.iteration6Result = action.payload;
break;
case 7:
state.iteration7Result = action.payload;
break;
case 8:
state.iteration8Result = action.payload;
break;
}
下面是状态的定义:
interface InitialState {
iteration1Result: IterationResult;
iteration2Result: IterationResult;
iteration3Result: IterationResult;
..., etc.
}
我天真地希望我能做这样的事情
state[`iteration${iterationNum}result`] = action.payload;
但我收到此错误:
Element implicitly has an 'any' type because expression of type '`iteration${number}Result`' can't be used to index type 'WritableDraft<TestStartActivity>'.ts(7053)
【问题讨论】:
-
你不应该有
iteration1Result等属性开始。请改用数组。 -
我的数据科学家正在请求这些字段名称。这被踢到 JSON。
标签: typescript redux typescript-typings