我有这个TS代码,我想将该部分也键入:
const { data: { person, car, another } }: any = useContext(MyContext);
这里的问题是ES皮棉说:
warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
我为人,汽车,另一个创建了3个接口,我想在useContext之后重用它们。 我的目标是分享人,汽车,另一个人
有任何线索吗?
答案 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
,并且将在不需要任何类型注释的情况下键入您的销毁结构。