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
}
}
}
这样写的话会报错即使写了,也会报别的错
因为OTest
这个对象其实是传递给库的配置对象,所以须为对象的形式
如果不使用函数重载的方式,能否实现像函数重载的功能,不然如果将返回值定为联合类型,接收的时候都要断言成某种类型就很头疼。。
回复
1个回答
test
2024-06-27
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]
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容