打字稿:类型'X'不提供签名'(prevState:undefined):undefined'的匹配项

RuntimeError

因此,我有一个使用TypeScript的React Native应用程序,出现的错误使我发疯。

基本上,有一个可搜索列表。它由值数组启动。用户键入SearchBar后,将过滤启动的数组,并返回更新的数组。

但是,TypeScript给了我错误: Type '{ id: string; name: string; selected: boolean; }[]' provides no match for the signature '(prevState: undefined): undefined'.

我很困惑,因为我不知道这'(prevState: undefined): undefined'实际上来自哪里以及为什么。你知道我在做什么错吗?帮助将不胜感激。

这是代码:

const defaultChoices = [
  {
    id: '1',
    name: 'default',
    selected: false,
  },
];

let choicesList;

const getChoicesList = () => {
  if (listName === 'include') {
    choicesList = Object.values(includeChoices).map(choice => ({
      ...choice,
    }));
  } else if (listName === 'exclude') {
    choicesList = Object.values(excludeChoices).map(choice => ({
      ...choice,
    }));
  }
};

const [filteredChoicesList, setFilteredChoicesList] = useState(choicesList);

useEffect(() => {
  getChoicesList();
}, []);

useEffect(() => {
    let choices = defaultChoices;

    if (listName === 'include') {
      choices = includeChoices;
    } else if (listName === 'exclude') {
      choices = excludeChoices;
    } else {
      choices = defaultChoices;
    }

    const newChoices = choices.filter(item => {
      const itemData = `${item.name.toUpperCase()}`; // ignore Uppercase/Lowercase and make equal
      const textData = query.toUpperCase();
      return itemData.indexOf(textData) > -1;
    });

    setFilteredChoicesList(newChoices); // error occurs for "newChoices"
  }, [effect]);
Bamniya的终结

问题是,您已将设置choicesList为undefined。并且getChoicesList在第一次初始化组件时被调用,但在此之前我们被设置choicesList为undefined的状态。

将您的代码部分更新为

let choicesList: any[] = [];

const getChoicesList = () => {
  let data: any[] = [];
  if (listName === 'include') {
    data = Object.values(includeChoices).map(choice => ({
      ...choice,
    }));
  } else if (listName === 'exclude') {
    data = Object.values(excludeChoices).map(choice => ({
      ...choice,
    }));
  }
  return data;
};

const [filteredChoicesList, setFilteredChoicesList] = useState<any[]>(choicesList);

useEffect(() => {
  const updatedList = getChoicesList();
  setFilteredChoicesList(updatedList)
}, []);

现在,您将拥有所需的filteredChoicesListwith数据,并且不会出现任何编译错误。另一件事是,创建一个接口,并any在状态和定义时用该接口替换

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

打字稿:类型中缺少索引签名

来自分类Dev

打字稿1.4联合类型,假类型不匹配错误

来自分类Dev

打字稿:扩展接口时类型中缺少索引签名

来自分类Dev

为什么打字稿告诉我类型X与ITSELF是不同的子类型?

来自分类Dev

打字稿-类型“ X”的参数不能分配给类型“ Y”的参数

来自分类Dev

类型“ X []”上不存在属性“ customProperty”。打字稿反应。TS2339

来自分类Dev

打字稿错误代码:2366,函数缺少结尾的return语句,并且返回类型不包含“ undefined”

来自分类Dev

打字稿:找不到导出/ JSX元素类型没有任何构造或调用签名

来自分类Dev

打字稿-参数类型为“字符串”的无索引签名

来自分类Dev

无法识别接口上“字符串”类型的索引签名(打字稿)

来自分类Dev

如何将类中每个属性的类型设置为打字稿中的函数签名?

来自分类Dev

打字稿反应上下文+类型“ {}”没有呼叫签名

来自分类Dev

打字稿 TS2604:JSX 元素类型“抽屉”没有任何构造或调用签名

来自分类Dev

打字稿1.3有时会给出错误的类型不匹配错误

来自分类Dev

(string|number)[] 和 string[]|number[] 之间的打字稿 ngrx 类型不匹配

来自分类Dev

打字稿:定义类型的对象,但根据需要推断提供的可选道具

来自分类Dev

如何在下面提到的场景中为爱好提供打字稿类型?

来自分类Dev

为无状态功能组件提供打字稿类型的正确方法是什么

来自分类Dev

打字稿中的原型:元素隐式具有“任何”类型,因为类型“_BaseOption”没有索引签名

来自分类Dev

为什么即使类型与对象道具不匹配,打字稿也允许将匿名类型转换为对象

来自分类Dev

Express 4.x与打字稿

来自分类Dev

自动解析打字稿依赖项

来自分类Dev

super()中的打字稿依赖项注入

来自分类Dev

打字稿-混合类型

来自分类Dev

打字稿联合类型

来自分类Dev

打字稿合并类型

来自分类Dev

打字稿:onPress类型

来自分类Dev

打字稿超级类型

来自分类Dev

打字稿包装类型

Related 相关文章

  1. 1

    打字稿:类型中缺少索引签名

  2. 2

    打字稿1.4联合类型,假类型不匹配错误

  3. 3

    打字稿:扩展接口时类型中缺少索引签名

  4. 4

    为什么打字稿告诉我类型X与ITSELF是不同的子类型?

  5. 5

    打字稿-类型“ X”的参数不能分配给类型“ Y”的参数

  6. 6

    类型“ X []”上不存在属性“ customProperty”。打字稿反应。TS2339

  7. 7

    打字稿错误代码:2366,函数缺少结尾的return语句,并且返回类型不包含“ undefined”

  8. 8

    打字稿:找不到导出/ JSX元素类型没有任何构造或调用签名

  9. 9

    打字稿-参数类型为“字符串”的无索引签名

  10. 10

    无法识别接口上“字符串”类型的索引签名(打字稿)

  11. 11

    如何将类中每个属性的类型设置为打字稿中的函数签名?

  12. 12

    打字稿反应上下文+类型“ {}”没有呼叫签名

  13. 13

    打字稿 TS2604:JSX 元素类型“抽屉”没有任何构造或调用签名

  14. 14

    打字稿1.3有时会给出错误的类型不匹配错误

  15. 15

    (string|number)[] 和 string[]|number[] 之间的打字稿 ngrx 类型不匹配

  16. 16

    打字稿:定义类型的对象,但根据需要推断提供的可选道具

  17. 17

    如何在下面提到的场景中为爱好提供打字稿类型?

  18. 18

    为无状态功能组件提供打字稿类型的正确方法是什么

  19. 19

    打字稿中的原型:元素隐式具有“任何”类型,因为类型“_BaseOption”没有索引签名

  20. 20

    为什么即使类型与对象道具不匹配,打字稿也允许将匿名类型转换为对象

  21. 21

    Express 4.x与打字稿

  22. 22

    自动解析打字稿依赖项

  23. 23

    super()中的打字稿依赖项注入

  24. 24

    打字稿-混合类型

  25. 25

    打字稿联合类型

  26. 26

    打字稿合并类型

  27. 27

    打字稿:onPress类型

  28. 28

    打字稿超级类型

  29. 29

    打字稿包装类型

热门标签

归档