在TS中解构对象

时间:2019-10-18 13:58:31

标签: reactjs typescript react-hooks react-context

我有这个TS代码,我想将该部分也键入:

    const { data: { person, car, another } }: any = useContext(MyContext);

这里的问题是ES皮棉说: warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any

我为人,汽车,另一个创建了3个接口,我想在useContext之后重用它们。 我的目标是分享人,汽车,另一个人

有任何线索吗?

1 个答案:

答案 0 :(得分:1)

类型注释不能放在解构操作中,:字符已在此处用作将被破坏的属性分配为新名称的一种方式。

const { person: p2 } = { person: "Name" }
p2 === "Name" // true

您可以将any替换为useContext中期望的类型。

const { data: { person, car, another } }: { data: { person: Person, car: Car, another: Another } }
  = useContext(MyContext);

但是理想情况下,useContext的返回类型应该从传递给它的参数中推断出来,当您创建上下文时,您应该有如下一行:

type ContextType = {data: {person: Person, car: Car, another: Another}}
const MyContext = createContext<ContextType>({/* default value */})

当您随后使用useContext时,返回的值将已经具有ContextType,并且将在不需要任何类型注释的情况下键入您的销毁结构。