TypeScript创建通用回调类型

时间:2018-07-10 23:36:00

标签: javascript node.js typescript tsc

说我有这个函数定义:

export type ErrorValueCallback = (err: any, val?: any) => void;

标准回调接口。我可以这样使用它:

export const foo = function(v: string, cb:ErrorValueCallback){
    cb(null, 'foo');
};

但是如果要使此回调通用,该怎么办?

export type EVCallback = <T>(err: any, val: T) => void;

该语法有效,但是当我尝试使用它时:

export const foo = function(v: string, cb:ErrorValueCallback<string>){
    cb(null, 'foo');
};

我收到错误

  

ErrorValueCallback不是通用的

我该怎么办?

2 个答案:

答案 0 :(得分:4)

您需要将泛型添加到 type type ErrorValueCallback<T>

固定示例

export type ErrorValueCallback<T> = (err: any, val: T) => void; // FIX

export const foo = function(v: string, cb:ErrorValueCallback<string>){
    cb(null, 'foo');
};

答案 1 :(得分:1)

我认为您想改用EVCallback

export type EVCallback<T> = (err: any, val: T) => void;

像这样:

export const foo = function(v: string, EVCallback<string>){
    cb(null, 'foo');
};