简体   繁体   English

Typescript,useContext(),错误:“never[]”类型的参数不可分配给类型参数

[英]Typescript, useContext(), error: Argument of type 'never[]' is not assignable to parameter of type

I'm trying to use useContext() hook in typescript, but I expireance numerouse errores.我正在尝试在 typescript 中使用 useContext() 挂钩,但我遇到了许多错误。 useState initialy is equal to empty array of interface Phone which is imported, and then state and setState are passed in value prop. useState initialy 等于导入的接口Phone的空数组,然后在value prop 中传递 state 和 setState。

import { createContext, useState } from 'react';
import { Phone } from '../types/Phone';

type SetValue = (value: Phone[]) => void;

interface LikedContextInterface {
  likedGadgets: Phone[];
  setLikedGadgets: SetValue;
}

export const likedContext = createContext<LikedContextInterface>([]);

type Props = {
  children: React.ReactNode;
};

export const LikedContextProvider: React.FC<Props> = ({ children }) => {
  const [likedGadgets, setLikedGadgets] = useState<Phone[]>([]);

  return (
    <likedContext.Provider value={{ likedGadgets, setLikedGadgets }}>
      { children }
    </likedContext.Provider>
  );
};

in terminal I recieve following errors: Argument of type 'never[]' is not assignable to parameter of type 'LikedContextInterface'.在终端中,我收到以下错误: Argument of type 'never[]' is not assignable to parameter of type 'LikedContextInterface'. Type 'never[]' is missing the following properties from type 'LikedContextInterface': likedGadgets, setLikedGadgets

Edited!!!已编辑!!!

So here is working code:所以这里是工作代码:

import { createContext, useState } from 'react';
import { Phone } from '../types/Phone';

type SetValue = (value: Phone[]) => void;

type LikedContextInterface = {
  likedGadgets: Phone[];
  setLikedGadgets: SetValue;
};

export const likedContext = createContext<LikedContextInterface>({
  likedGadgets: [],
  setLikedGadgets: () => {},
});

type Props = {
  children: React.ReactNode;
};

export const LikedContextProvider: React.FC<Props> = ({ children }) => {
  const [likedGadgets, setLikedGadgets] = useState<Phone[]>([]);

  return (
    <likedContext.Provider value={{ likedGadgets, setLikedGadgets }}>
      { children }
    </likedContext.Provider>
  );
};

You have to initialize context correctly by providing initial value which is LikedContextInterface:您必须通过提供 LikedContextInterface 的初始值来正确初始化上下文:

export const likedContext = createContext<LikedContextInterface>({
   likedGadgets: [],
   setLikedGadgets: (value: Phone[]) => {},
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 React TypeScript:参数不可分配给“从不”类型的参数 - React TypeScript: Argument is not assignable to parameter of type 'never' Typescript 错误“类型参数不可分配给类型参数” - Typescript error 'argument of type is not assignable to parameter of type' “文件”类型的参数不能分配给“从不”类型的参数。 与 TypeScript 反应 - Argument of type 'File' is not assignable to parameter of type 'never'. React with TypeScript 'string' 类型的参数不可分配给 typeScript 中的 'never' 类型的参数 - Argument of type 'string' is not assignable to parameter of type 'never' in typeScript 与 Typescript 反应:“never[]”类型的参数不可分配给“StateProperties |”类型的参数 (() =&gt; 状态属性)' - React with Typescript: Argument of type 'never[]' is not assignable to parameter of type 'StateProperties | (() => StateProperties)' 打字稿:&#39;{translationSentences:从不[]; }&#39; 不可分配给类型为 &#39;never&#39; 的参数 - Typescript: '{ translatedSentences: never[]; }' is not assignable to parameter of type 'never' “状态”类型的参数不能分配给“从不”类型的参数 - Argument of type 'State' is not assignable to parameter of type 'never' 在 Typescript 中声明类型时,“never[]”类型的参数不可分配给“never”类型的参数 - Argument of type 'never[]' is not assignable to parameter of type 'never' when declaring a type in Typescript CombineReducers与Typescript返回错误“类型的参数不能分配给&#39;ReducersMapObject&#39;类型的参数” - CombineReducers with Typescript returns error “Argument of type is not assignable to parameter of type 'ReducersMapObject'” 打字稿错误:参数类型无法分配给参数类型,但它们是相同的 - Typescript error: Argument type is not assignable to parameter type, but they are the same
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM