typescript 错误“类型为“{}”的参数无法分配给类型为“T”的参数|(()=>T)'" in a React component with a type parameter [closed]

wvt8vs2t  于 2023-04-22  发布在  TypeScript
关注(0)|答案(1)|浏览(124)

**已关闭。**此问题需要debugging details。当前不接受答案。

编辑问题以包括desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
5天前关闭。
Improve this question
我正在努力做到这一点:

function SomeComponent<T>({ children }: PropsType) {
  const [configuration, setConfiguration] = useState<T>({})
}

但我得到了:
“{}”类型的参数不能分配给“T”类型的参数|(()=〉T)'
这里是一个操场与我目前的代码。
我希望useState的值是一个深度嵌套的对象(叶子节点作为嵌套对象,字符串,数字,空值或数组等,基本上是一个JSON对象)。我尝试了这个,但我得到了同样的错误:

function SomeComponent<T extends object>({ children }: PropsType) {
  const [configuration, setConfiguration] = useState<T>({})
}

如何正确输入此内容?

xyhw6mcr

xyhw6mcr1#

import React, { useMemo, useState } from 'react'

type ConfigurationContextType = {
  configuration: Configuration
  setConfiguration: (config: object) => void
}

type Configuration = {
  darkMode?: boolean
}

export const ConfigurationContext =
  React.createContext<ConfigurationContextType>({
    configuration: {},
    setConfiguration: () => {},
  })

export function ConfigurationProvider({ children }: PropsType) {
  const [configuration, setConfiguration] = useState<Configuration>({})

  const value = useMemo(
    () => ({
      configuration,
      setConfiguration,
    }),
    [configuration, setConfiguration],
  )

  return (
    <ConfigurationContext.Provider value={value}>
      {children}
    </ConfigurationContext.Provider>
  )
}

type PropsType = {
  children: React.ReactNode
}

您不需要使用泛型。
我创建了一个Configuration类型并将其交给useState。

相关问题