键入对象时会发生问题,导致打字稿发生问题-元素隐式具有“任意”类型,因为类型为“

时间:2019-03-29 11:03:37

标签: javascript reactjs typescript

我在键入以下内容时遇到问题:

// if I remove the `any` below it breaks.
const teams: any = {
    liverpool: <Liverpool />,
    manUtd: <ManUtd />,
    arsenal: <Arsenal />,
};

export const TeamCrest = ({ team }: { team: keyof typeof teams }) =>
  teams[team];

它在其他地方使用过:

<TeamCrest team={'liverpool'} />

如果我执行const teams : any {....},它可以工作,但是如果没有,则会出现以下错误:

  

元素隐式具有“ any”类型,因为类型为“

任何人都可以建议如何正确键入吗?

2 个答案:

答案 0 :(得分:0)

team不是任何字符串,而是一个非常具体的字符串。

export const TeamCrest = ({ team }: { team: keyof typeof teams }) =>
  teams[team];

答案 1 :(得分:0)

我知道了,您需要使用Record。以下作品:

export const teams: Record<string, JSX.Element> = {
 ....
}