带有可选错误参数的Typescript回调类型

带有可选错误参数的Typescript回调类型,typescript,parameters,callback,Typescript,Parameters,Callback,这是我当前的代码 type Callback=(t:t,err?:Error)=>void; foo(回调:回调){ 回调(“Hello World”);//数据 回调(null,new CustomError(“Hello world”);//错误 } //用法 foo((名称:字符串,错误:Error)=>{ //这里的东西 }); 哪种类型是正确的,这样我就可以发送错误和数据作为唯一的参数 callback("Hello World"); callback(new C

这是我当前的代码

type Callback=(t:t,err?:Error)=>void;
foo(回调:回调){
回调(“Hello World”);//数据
回调(null,new CustomError(“Hello world”);//错误
}
//用法
foo((名称:字符串,错误:Error)=>{
//这里的东西
});
哪种类型是正确的,这样我就可以发送错误和数据作为唯一的参数

callback("Hello World");
callback(new CustomerError("Hello World"));

据我所知,这是你想要的

type Callback=(dataOrError:T | Error)=>void
函数foo(回调:回调){
回调(“Hello World”);//数据
回调(新错误(“发生错误”);//错误
}
//用法
foo((数据或错误)=>{
if(数据或错误实例错误){
//处理错误
返回;
}
//处理数据
//Typescript知道这是一个字符串,因为它唯一的其他类型是Error,
//这会终止函数
console.log(dataOrError);
});

无可否认,这是一种处理回调的奇怪方法,但我猜它是有效的。

请分享完整示例如果回调只调用一次,让foo()返回承诺,如果调用多次,让foo()返回可观察的。