我有一个类似的反应组件:
const myComponent = ({constant}: Iprops) => (
<div>
{CONSTANTS[constant].property ? <showThis /> : null
</div>
)
它抱怨element implicitly has an 'any' type because type 'object' has no index signature
如何将CONSTANTS
添加到我的界面?我尝试过
interface IProps {
[CONSTANTS: any]: {
constant: boolean;
}
}
但显然不是那样。如何声明对象中每个键的类型?
谢谢
答案 0 :(得分:1)
我不确定我是否了解您实际需要的对象的形状。但是您可以使用以下语法键入对象:
const CONSTANTS: { [key:string]: boolean } = {}
CONSTANTS["something1"] = false; // ok
CONSTANTS["something2"] = "Hey"; // not ok
这有点棘手,因为键实际上可以be either string
or number
,但是值类型已正确实施,因此您在那里仍然可以使用更复杂的类型,而不是boolean
。