javascript - 获取函数声明上的函数参数类型

标签 javascript reactjs typescript

我正在构建一个自定义 React 钩子(Hook),它接受一个对象(其属性之一是函数)作为参数。

我想获得该函数参数的类型定义,我目前可以这样做:

  const { submitHandler, register } = useForm({
    handleSubmit: data => {
      /*
      Everything is ok:
      (parameter) data: {
          inputs: InputRefs;
          e: React.FormEvent<HTMLFormElement>;
      }
      */
    }
  });

但是,我想通过在 useForm 参数对象之外获取 handleSubmit 来拆分代码,如下所示:

  const handleSubmit = data => {
    // Parameter 'data' implicitly has an 'any' type, but a better type may be inferred from usage.
  };

  const { submitHandler, register } = useForm({ handleSubmit });

但是如果我这样做,data 的类型为“any”...有没有办法获取该函数参数的类型定义?或者唯一正确的解决方案实际上只是导出/导入类型?

抱歉,如果这不明确或已经解释过,但我刚刚开始学习 typescript ,我似乎找不到正确的关键字来找到我所问问题的答案......

谢谢

最佳答案

右键单击此处的handleSubmit:

const { submitHandler, register } = useForm({
    handleSubmit: data => {
      /*
      Everything is ok:
      (parameter) data: {
          inputs: InputRefs;
          e: React.FormEvent<HTMLFormElement>;
      }
      */
    }
  });

并选择“转到定义”。这将为您提供需要在此处指定的类型:

const handleSubmit: ${Type} = data => {
    // Parameter 'data' implicitly has an 'any' type, but a better type may be inferred from usage.
  };

  const { submitHandler, register } = useForm({ handleSubmit });

关于javascript - 获取函数声明上的函数参数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60379324/

相关文章:

javascript - 如果模型不存在,为什么 IE 会呈现 null

javascript - 重置事件动画 jQuery

javascript - shouldComponentUpdate() 没有被调用

reactjs - 如何在react autosuggest中只渲染5个项目?

javascript - 使用 useState 后控制台记录状态不返回当前值

javascript - 如何在 Typescript 中为其子级设置函数 props 类型?类型 TS2339 上不存在属性 'children'

generics - TypeScript 中静态方法的抽象方法版本

javascript - `with` 语句中函数声明的范围

javascript - Wordpress 中的 JS 注入(inject)

javascript - 我想在 angular.js 中获取按钮单击事件的先前路径