说我有这个函数定义:
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不是通用的
我该怎么办?
答案 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');
};