returns 回调的 ReturnType 的打字稿函数
typescript function that returns ReturnType of callback
如何注释接受回调的函数,并从回调 return 类型推断出这样的函数 return 类型?
// say that callback takes a number
function takesCallback(cb: (arg:number) => infer T /* error */ ) {
return cb(42)
}
takesCallback(x => 'foo') // should infer 'string'
这里可以使用helperReturnType
,也需要重写泛型结构,使其可以约束为一个函数
function takesCallback<T extends (...args: unknown[]) => unknown>(callback: T): ReturnType<T> {
return callback(42) as ReturnType<T>;
}
const res1 = takesCallback(x => 'foo'); // string
const res2 = takesCallback(x => 123); // number
如何注释接受回调的函数,并从回调 return 类型推断出这样的函数 return 类型?
// say that callback takes a number
function takesCallback(cb: (arg:number) => infer T /* error */ ) {
return cb(42)
}
takesCallback(x => 'foo') // should infer 'string'
这里可以使用helperReturnType
,也需要重写泛型结构,使其可以约束为一个函数
function takesCallback<T extends (...args: unknown[]) => unknown>(callback: T): ReturnType<T> {
return callback(42) as ReturnType<T>;
}
const res1 = takesCallback(x => 'foo'); // string
const res2 = takesCallback(x => 123); // number