ts对象函数的重载怎么写?-灵析社区

文文问问

type Test = { o1(num:number):number; o1(num:number,flag:boolean):number[]; } const OTest:Test = { o1(num:number):number o1(num:number,flag:boolean):number[] o1(num:number,flag:boolean){ if(flag){ return [num] }else{ return num } } } 这样写的话会报错 ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250103/840123f0f16be257970fd4a01ca4ad91.png) 即使写了,也会报别的错 ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250103/e0e33a2751e2a93519fa0f1d9cbaaf13.png) 因为`OTest`这个对象其实是传递给库的配置对象,所以须为对象的形式 如果不使用函数重载的方式,能否实现像函数重载的功能,不然如果将返回值定为联合类型,接收的时候都要断言成某种类型就很头疼。。

阅读量:247

点赞量:8

问AI
winkkkkk9421
type Test = { o1(num: number, flag?: boolean): number | number[]; }; class OTest implements Test { o1(num: number): number; o1(num: number, flag: boolean): number[]; o1(num: number, flag?: boolean): number | number[] { if (flag) { return [num]; } else { return num; } } } const testInstance = new OTest(); console.log(testInstance.o1(1)); // 输出: 1 console.log(testInstance.o1(1, true)); // 输出: [1]