[英]TypeScript error of using variable as key of object - React
I have problem with the type of variable key in TypeScript.我对 TypeScript 中的变量键类型有疑问。 Component is receiving an array of an objects (dataToShow) from parent.
组件正在从父级接收对象数组 (dataToShow)。 Function is taking the keys and putting this into an arrayOfKeys.
Function 正在获取密钥并将其放入 arrayOfKeys 中。 I'm trying to map thru dataToShow and create a divs accroding to that.
我正在尝试通过 dataToShow map 并创建一个符合此要求的 div。 Unfortunately I'm getting an error:
Element implicitly has an 'any' type because expression of type 'keyof Data' can't be used to index type '{ id: number; brand?: string | undefined; hostname?: string | undefined; description?: string | undefined; contractNumber?: string | undefined; model?: string | undefined; user?: string | undefined; }'. No index signature with a parameter of type 'number' was found on type '{ id: number; brand?: string | undefined; hostname?: string | undefined; description?: string | undefined; contractNumber?: string | undefined; model?: string | undefined; user?: string | undefined; }'.ts(7053)
不幸的是,我收到一个错误:
Element implicitly has an 'any' type because expression of type 'keyof Data' can't be used to index type '{ id: number; brand?: string | undefined; hostname?: string | undefined; description?: string | undefined; contractNumber?: string | undefined; model?: string | undefined; user?: string | undefined; }'. No index signature with a parameter of type 'number' was found on type '{ id: number; brand?: string | undefined; hostname?: string | undefined; description?: string | undefined; contractNumber?: string | undefined; model?: string | undefined; user?: string | undefined; }'.ts(7053)
Element implicitly has an 'any' type because expression of type 'keyof Data' can't be used to index type '{ id: number; brand?: string | undefined; hostname?: string | undefined; description?: string | undefined; contractNumber?: string | undefined; model?: string | undefined; user?: string | undefined; }'. No index signature with a parameter of type 'number' was found on type '{ id: number; brand?: string | undefined; hostname?: string | undefined; description?: string | undefined; contractNumber?: string | undefined; model?: string | undefined; user?: string | undefined; }'.ts(7053)
The component:组件:
type Data = {
id: number;
brand?: string;
hostname?: string;
description?: string;
contractNumber?: string;
model?: string;
user?: string;
}[];
const Module: React.FC<{ dataToShow: Data }> = ({ dataToShow }) => {
const arrayOfKeys: string[] = [];
for (let data of dataToShow) {
for (let name in data) {
arrayOfKeys.push(name);
}
break;
}
return (
<div>
{dataToShow.map((x) => {
return <div>
{x[arrayOfKeys[0] as keyof Data]}
</div>;
})}
</div>
);
};
export default Module;
Data
is an array, so keyof Data
would actually give you things like concat
, splice
, etc. Data
是一个数组,因此keyof Data
实际上会为您提供concat
、 splice
等内容。
It should be Data[number]
(or any number, actually, even Data[123.456]
works):它应该是
Data[number]
(或任何数字,实际上,即使Data[123.456]
也可以):
{x[arrayOfKeys[0] as keyof Data[number]]}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.