如何在打字稿中声明函数类型

Posted

技术标签:

【中文标题】如何在打字稿中声明函数类型【英文标题】:How to declare a function type in typescript 【发布时间】:2019-05-05 15:20:14 【问题描述】:

我正在使用打字稿并将一个函数传递给另一个函数。

如果我有一个函数被传递给打字稿中的另一个函数,我应该如何编写类型?

我尝试过successHandler: function,但这似乎不起作用。

export function useSubscription(address: string, successHandler: function) 
   successHandler(address)

【问题讨论】:

Typescript: How to define type for a function callback (as any function type, not universal any) used in a method parameter的可能重复 【参考方案1】:

用函数签名声明一个类型并将其作为类型传递:

type SuccessHandler = (address: string) => string;

function useSubscription(address: string, successHandler: SuccessHandler) 
    successHandler(address)

【讨论】:

【参考方案2】:

你可以像这样使用回调函数作为强类型参数

class Menu 
    addItem(callback: (n: string) => any) : void 
        callback('Egg Roles');
    

var menu = new Menu();

var itemCallBack = (result: string) : void => 
    alert(result);


menu.addItem(itemCallBack); 

这是一个工作示例。如果您有任何疑问,请告诉我。

【讨论】:

【参考方案3】:

你可以这样声明:

export function useSubscription(address: string, successHandler: Function) 
   successHandler(address)

更改为Function 的大写 F。

【讨论】:

以上是关于如何在打字稿中声明函数类型的主要内容,如果未能解决你的问题,请参考以下文章

如何在打字稿中避免这种符号“| undefined”?

如何在打字稿中声明成功/失败返回类型

如何将方法的泛型类型限制为打字稿中的对象?

获取泛型函数的类型而不调用打字稿中的函数

如何在打字稿中正确导入自定义类型

如何在打字稿中使用可能的字符串和数字索引确定对象的类型?