ts报错Type 'number' has no call signatures.如何解决?

发布于 2022-09-11 23:10:10 字数 1328 浏览 22 评论 0

第一次用ts, 求指导
react创建自定义组件 使用导出方法时
ts报错
Not all constituents of type 'number | Dispatch<SetStateAction<number>>' are callable.
Type 'number' has no call signatures.

useCount:

    import * as React from 'react'

/**
 *
 * @param defaultCount
 * 自定义hooks
 */
const useCount = (defaultCount: number) => {
  const [count, setCount] = React.useState(defaultCount)
  const it: any = React.useRef()

  React.useEffect(() => {
    it.current = setInterval(() => {
      console.log('add...', count)
      setCount(() => count + 1)
    }, 1000)
  }, [])

  React.useEffect(() => {
    if (count >= 10) {
      clearInterval(it.current)
    }
  });
  return [count, setCount]
}

export default useCount

index.tsx

    import * as React from 'react'
import useCount from './useCount';

export default function index() {
  const [count, setCount] = useCount(3)
   // ts报错
  // This expression is not callable.
  // Not all constituents of type 'number | Dispatch<SetStateAction<number>>' are callable.
  //   Type 'number' has no call signatures.
  const add = () => setCount(0)
 
  return (
    <div>
      usecount: { count }
      <button onClick={add}>add</button>
    </div>
  )
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

对你而言 2022-09-18 23:10:10

return [count, setCount] 返回的是 (number|Function)[] 不是你想要那個tuple類型.

你可以return ... as const (需要近期的ts版本) 或者手寫那個tuple.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文