typescript 类型“string[]”的参数不能赋给类型“number[]”的参数,类型“string”不能赋给类型“number”

brc7rcf0  于 2023-03-04  发布在  TypeScript
关注(0)|答案(1)|浏览(760)

我做了一个函数来清理我的分类列表。它工作得很完美,但我的终端有问题。我的代码:
onCategories接口:

interface IEventSearchFilterProps {
  eventData: Record<string, any>;
  // eslint-disable-next-line no-unused-vars
  onCategoriesChange: (categories: number[]) => void
}
useEffect(() => {

    const sanitizeCategories = () => {

      const filteredCategories = [selectedCategory, selectedLocation, selectedMonth].filter(category => {
        
        return Boolean(category)
      })

      return filteredCategories;
    }

    onCategoriesChange(sanitizeCategories())

  }, [selectedCategory, selectedLocation, selectedMonth])

我的终端问题:

Argument of type 'string[]' is not assignable to parameter of type 'number[]'.
  Type 'string' is not assignable to type 'number'.
 onCategoriesChange(sanitizeCategories())
                          ~~~~~~~~~~~~~~~~~~~~

sanitizeCategories带有下划线。
sanitizeCategories带有下划线。

col17t5w

col17t5w1#

感谢您编辑问题。
控制台上的错误很清楚地说明了问题所在:函数sanitizeCategories正在返回一个字符串数组,而函数onCategoriesChange正在等待一个数字数组。
最简单的解决方案是更改onCategoriesChange正在等待的参数类型,使其变为:

interface IEventSearchFilterProps {
  eventData: Record<string, any>;
  onCategoriesChange: (categories: string[]) => void
}

如果出于某种原因,您在其他地方使用onCategoriesChange,并且等待一个数字数组,则可以同时使用它们:

onCategoriesChange: (categories: number[] | string[]) => void

相关问题