在HarmonyOS NEXT开发中ArkTS 关于重载的实现方式?
ArkTS函数重载实现方式:
ArkTS基于TypeScript扩展,支持通过声明多个函数签名+统一实现的方式实现重载。具体规则:
签名声明规则
// 类型声明(不包含实现)
function foo(param: string): void;
function foo(param: number, flag: boolean): void;
// 统一实现(需兼容所有签名)
function foo(param: string | number, flag?: boolean) {
if (typeof param === 'string') {
console.log('字符串处理:', param.toUpperCase())
} else {
console.log('数字处理:', param * (flag ? 10 : 1))
}
}
@Builder
)不支持重载最佳实践
// 正确示例:参数类型明确区分
class Calculator {
add(a: number, b: number): number; // 签名1
add(a: string, b: string): string; // 签名2
add(a: number | string, b: number | string): any {
if (typeof a === 'number') {
return a + (b as number)
}
return a.concat(b as string)
}
}
调试技巧:
使用typeof
/instanceof
进行类型守卫,通过DevEco Studio的类型检查确保调用方正确匹配重载签名。
363 阅读
366 阅读
1 回答384 阅读
195 阅读
179 阅读
167 阅读
170 阅读
可以使用可选参数实现重载效果: