function callbackWrapper<T = string>(cb?: () => T): T {
return cb?.() ?? 'default value';
}
const a = callbackWrapper(() => 7); // a should be number
const b = callbackWrapper(() => true); // b should be boolean
const c = callbackWrapper(() => 'string'); // c should be string
const d = callbackWrapper(); // d should be string ('default value')
如何更改函数callbackWrapper标头类型,这样返回类型就不会抛出错误
尝试了强制转换返回类型,它有效,但是您可以再次使用“7 asknown as string[]”强制转换任何内容,并且它将有效。所以这不是解决方案
由于
callbackWrapper
可以返回参数类型T
给定的任何类型,因此返回类型可能与'default value'
不兼容。
相反,您应该明确声明您希望返回
T
和 'default value'
(或 string
):
function callbackWrapper<T = string>(cb?: () => T): T|'default value' {
return cb?.() ?? 'default value';
}