type fun = { (normal:number):number; (normal:number,abnormal:string):string; }; const f:fun=(a:number,b?:string)=>{ return b || a; }
我不太明白这段代码为什么会报错。
typescript认为我返回值的格式为 number|string,与重载不匹配。
但实际上这段代码执行的逻辑确实是只有第一个参数,就返回number,如果有第二个参数就返回string。
请问我该如何写才合法呢?
已解决
悬赏分:0
- 解决时间 2022-01-04 12:22
点赞 0反对 0举报 0
收藏 0
分享 2
回答1
最佳
-
如果你这样定义就没问题
function f1(normal: number): number; function f1(normal: number, abnormal: string): string; function f1(normal: number, abnormal?: string): number | string { return abnormal || normal; }
fun 是两个函数签名的重载,而 f 只有一个签名。
支持 0 反对 0 举报2022-01-04 08:18