【发布时间】:2021-08-12 16:29:21
【问题描述】:
我正在使用 ts/react/redux 创建一个前端应用程序。我熟悉类型语言,但似乎还不够。
情况: 有 react 组件(这里我们不关心 JSX):
import React from 'react';
import './MathComponent.css';
interface MathData {
mathExpectation: number,
variance: number,
standardDeviation: number,
}
interface Props {
data: MathData,
}
export const MathComponent: React.FC<Props> = ({
data,
}) => {
const mathConvert = (num: number) => {
// some logic here
return number+1;
}
const myData = {...data};
const newData = Object.keys(data).map((key:string)=>{
myData[key] = mathConvert(myData[key]);
});
return (
...JSX
)
}
据我所知,这里有一个常见问题:myData[key] 下划线作为文本错误:
元素隐含地具有“任何”类型,因为类型的表达式 “字符串”不能用于索引类型“对象”。没有索引签名 在“对象”类型上找到“字符串”类型的参数。
我看到一些类似的问题,但不懂解释。
所以我们的想法是遍历所有属性并在每个属性上使用 mathConvert-fnc 改变“myData”对象。 我知道,mutate 对象通常是一种不好的方法,但我在这里看不到任何其他选项。
我认为,主要问题:如何修复类型错误,次要:也许有更好的方法来枚举 obj 道具并在其上使用我的 fnc?
【问题讨论】:
标签: typescript