带有 TypeScript 的可选泛型类型

Optional generic type with TypeScript

我有通用函数类型:

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

该类型可以这样使用:

const v = function(cb: EVCb<boolean>){
   cb(null, true);  // compiles correctly
};

const v = function(cb: EVCb<boolean>){
   cb(null, 'yo');  // does not compile 
};

但我想知道是否有办法为错误参数添加 optional 类型,因为现在它总是 any。像这样:

export type EVCb<T, E?> = (err: E | any, val?: T) => void;

用户会这样使用:

EVCb<boolean, Error>

或者他们可以选择省略第二个参数,只需执行:

EVCb<boolean>

这有可能吗?

如果您为其提供默认值,则类型参数可以是可选的:

export type EVCb<T, E = any> = (err: E, val?: T) => void;