打字稿指向功能

长颈鹿

我正在使用TypeScript和redux编写一个reactjs应用程序为了描述组件道具,我使用的是接口而不是propTypes这使我可以在编译时检查prop类型。

一些道具是函数(Redux的动作的创作者,通过包裹connectdispatch)。

怎么说Typ​​eScript我的组件属性是那个动作创建者函数签名?我的意思是我不想重复描述类型。

要了解更多问题,请看以下示例:

// here is my action creator
function someAction(prop1: number, prop2: string) {
  ...
}

interface IComponentProps {
  // here I want to say
  // that this is the same function as above,
  // but I have to duplicate its type signature
  someAction(prop1: number, prop2: string);
}

当然,我可以为该函数创建一个接口:

interface ISomeActionFunction {
  (prop1: number, prop2: string): void
}

然后在函数声明和属性接口中都使用它,但是我想知道是否有任何方法可以直接指向特定函数?

编码器

正如您已经意识到的那样,使用界面是您的最佳方法。您可以使它看起来像这样:

interface IComponentProps {
    someAction: ISomeActionFunction;
}

interface ISomeActionFunction {
    (prop1: number, prop2: string): void;
}

const someAction: ISomeActionFunction = (p1, p2) => {
    // the compiler will correctly infer the types of p1 and p2 for you
    ...
}

这样,函数类型不会重复,并且编译器仍然可以检查所有内容。

如果您预计需要大量的动作创建者,则可以添加如下的通用帮助器:

interface IBinaryActionCreator<T1, T2, TResult> {
  (prop1: T1, prop2: T2): TResult;
}

type ISomeActionFunction = IBinaryActionCreator<number, string, void>;

但这可能太过分了。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

打字稿导出默认功能

来自分类Dev

包装重载的打字稿功能

来自分类Dev

打字稿中的链接功能

来自分类Dev

打字稿模块作为功能

来自分类Dev

打字稿中的模拟功能

来自分类Dev

导出打字稿功能“缺少通话签名”

来自分类Dev

打字稿重载箭头功能

来自分类Dev

接口内部的打字稿默认功能

来自分类Dev

打字稿-带参数的箭头功能

来自分类Dev

打字稿-导入核心功能

来自分类Dev

打字稿装饰设置器功能

来自分类Dev

打字稿:接口中的重载功能如何

来自分类Dev

打印来源打字稿功能定义

来自分类Dev

打字稿-在保留签名的同时包装功能

来自分类Dev

Flutter Firebase云功能打字稿

来自分类Dev

等待地图功能完成打字稿

来自分类Dev

(蠕变)打字稿功能未找到

来自分类Dev

如何实现打字稿功能重载

来自分类Dev

导出打字稿功能“缺少通话签名”

来自分类Dev

打字稿:为momentjs的原型添加功能

来自分类Dev

打字稿:接口中的重载功能如何

来自分类Dev

移相器打字稿功能无法启动

来自分类Dev

打字稿:声明现有类的功能

来自分类Dev

打字稿通用“一次”功能

来自分类Dev

基于打字稿中参数值的条件打字功能

来自分类Dev

业力-如何指向源地图进行打字稿覆盖

来自分类Dev

使用underscore.js“去抖动”功能和打字稿

来自分类Dev

打字稿功能输出不能分配给条件类型

来自分类Dev

打字稿箭头功能参数类型安全