HarmonyOS 鸿蒙Next原生应用开发-从TS到ArkTS的适配规则(十六)

发布于 1周前 作者 wuwangju 来自 鸿蒙OS

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 联系官网客服。

3 回复

一、限制省略函数返回类型标注

规则: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能在未来带来更多创新的技术和理念。

回到顶部