类型“未知 []”缺少“初始状态”类型的以下属性

Posted

技术标签:

【中文标题】类型“未知 []”缺少“初始状态”类型的以下属性【英文标题】:Type 'unknown[]' is missing the following properties from type 'InitialState' 【发布时间】:2021-12-26 01:31:57 【问题描述】:

想弄清楚如何将类型传递给

<Context.Provider value=[state, dispatch]>children 
</Context.Provider>

类型“unknown[]”缺少类型“InitialState”的以下属性:navigateTo、user、avatar、dashBoardSelectedMenuItemts(2739) index.d.ts(338, 9):预期类型来自属性“值”,该属性在此处声明为类型“IntrinsicAttributes & ProviderProps” (JSX 属性) React.ProviderProps.value: InitialState

import React,  createContext  from "react";
import Reducer from "./reducer";

interface InitialState 
  navigateTo: string;
  user: string;
  avatar: string;
  dashBoardSelectedMenuItem: string;


const initialState: InitialState = 
  navigateTo: "dashboard",
  user: null,
  avatar: null,
  dashBoardSelectedMenuItem: "dashboard",
;
export const Context = createContext<InitialState>(initialState);

const Store = ( children ) => 
  const [state, dispatch] = React.useReducer<any>(Reducer, initialState);

  return (
    <Context.Provider value=[state, dispatch]>children</Context.Provider>
  );
;

export default Store;

感谢收看。

【问题讨论】:

【参考方案1】:

试试这个

import React,  createContext  from "react";
import Reducer from "./reducer";

export default function App() 
  return (
    <div className="App">
      <h1>Hello CodeSandbox</h1>
      <h2>Start editing to see some magic happen!</h2>
    </div>
  );


interface InitialState 
  navigateTo: string;
  user: string | null;
  avatar: string | null;
  dashBoardSelectedMenuItem: string;


const initialState: InitialState = 
  navigateTo: "dashboard",
  user: null,
  avatar: null,
  dashBoardSelectedMenuItem: "dashboard"
;

export const Context = createContext<[InitialState, React.Dispatch<any>]>([
  initialState,
  () => 
]);

const Store = ( children ) => 
  const [state, dispatch] = React.useReducer(Reducer, initialState);

  return (
    <Context.Provider value=[state, dispatch]>children</Context.Provider>
  );
;

export default Store;

在你的 reducer 中添加如下状态的类型信息

export const Reducer = (state: InitialState, action:any): InitialState => 
  switch (action.type) 
    ...
    ...
  

【讨论】:

您已关闭错误现在已移至“状态”而不是值...类型“”缺少类型“初始状态”中的以下属性:navigateTo、用户、头像、dashBoardSelectedMenuItem @fuzzybear,更新了答案 与@shankar 的评论一起使用,从 usereducer 中删除了任何内容 以最接近的方式接受您的答案不需要减速器代码,请在下面注明@shankar upadhyay。【参考方案2】:

让我试着帮助你。

在这里,您已将初始状态中的类型 os 用户和头像定义为字符串,您应该仅将字符串作为值传递。

也许您传递的是 null 而不是空字符串“” 可以解决类型问题。

typeof null 是 Object。

const initialState: InitialState = navigateTo: "dashboard", user: "", avatar: "", dashBoardSelectedMenuItem: "dashboard", ;

类似问题可以访问此链接Using react context with react hooks in typescript

【讨论】:

您好,将值更改为空字符串后,值仍然在抱怨 type unknown[] is missing the ... ,和之前一样,感谢您的尝试。 嗨,尝试 value=[initialState:state, dispatch]> createContext]> 如果没有目的,您可以在删除数组后尝试 createContext> 与上面的@Amila Senadheera 答案结合使用

以上是关于类型“未知 []”缺少“初始状态”类型的以下属性的主要内容,如果未能解决你的问题,请参考以下文章

类型“文档”缺少类型中的以下属性

与 Typescript 反应 - 类型 缺少类型中的以下属性

如何修复 Typescript 中的“以下属性中缺少类型''...”错误?

“订阅”类型缺少“订阅”类型的以下属性:_parentOrParents、_subscriptions

TS 类型缺少以下属性

未知的覆盖说明符,缺少类型说明符