HarmonyOS 鸿蒙Next原生应用开发-从TS到ArkTS的适配规则(十六)
HarmonyOS 鸿蒙Next原生应用开发-从TS到ArkTS的适配规则(十六)
找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17
关于HarmonyOS 鸿蒙Next原生应用开发-从TS到ArkTS的适配规则(十六)的问题,您也可以访问:https://www.itying.com/category-93-b0.html 联系官网客服。
一、限制省略函数返回类型标注
规则:arkts-no-implicit-return-types
级别:错误
ArkTS在部分场景中支持对函数返回类型进行推断。当return语句中的表达式是对某个函数或方法进行调用,且该函数或方法的返回类型没有被显著标注时,会出现编译时错误。在这种情况下,请标注函数返回类型。
TypeScript
// 只有在开启noImplicitAny选项时会产生编译时错误 function f(x: number) { if (x <= 0) { return x; } return g(x); }
// 只有在开启noImplicitAny选项时会产生编译时错误 function g(x: number) { return f(x - 1); }
function doOperation(x: number, y: number) { return x + y; }
f(10); doOperation(2, 3);
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
ArkTS
// 需标注返回类型: function f(x: number): number { if (x <= 0) { return x; } return g(x); }
// 可以省略返回类型,返回类型可以从f的类型标注推导得到 function g(x: number): number { return f(x - 1); }
// 可以省略返回类型 function doOperation(x: number, y: number) { return x + y; }
f(10); doOperation(2, 3);
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
二、不支持参数解构的函数声明
规则:arkts-no-destruct-params
级别:错误
ArkTS要求实参必须直接传递给函数,且必须指定到形参。
TypeScript
function drawText({ text = ‘’, location: [x, y] = [0, 0], bold = false }) { text; x; y; bold; }
drawText({ text: ‘Hello, world!’, location: [100, 50], bold: true });
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
ArkTS
function drawText(text: String, location: number[], bold: boolean) { let x = location[0]; let y = location[1]; text; x; y; bold; }
function main() { drawText(‘Hello, world!’, [100, 50], true); }
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
三、不支持在函数内声明函数
规则:arkts-no-nested-funcs
级别:错误
ArkTS不支持在函数内声明函数,改用lambda函数。
TypeScript
function addNum(a: number, b: number): void {
// 函数内声明函数 function logToConsole(message: string): void { console.log(message); }
let result = a + b;
// 调用函数 logToConsole('result is ’ + result); }
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
ArkTS
function addNum(a: number, b: number): void { // 使用lambda函数代替声明函数 let logToConsole: (message: string) => void = (message: string): void => { console.log(message); }
let result = a + b;
logToConsole('result is ’ + result); }
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
本文根据HarmonyOS NEXT Developer Beta1官方公开的开发文档整理而成。
更多关于HarmonyOS 鸿蒙Next原生应用开发-从TS到ArkTS的适配规则(十六)的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
期待HarmonyOS能在未来带来更多创新的技术和理念。