1# ArkCompiler子系统Changelog 2 3## cl.ArkCompiler.1 ArkTS语法检查工具变更 4 5OpenHarmony SDK版本4.0.10.10/11相比4.0.10.8,ArkTS语法检查工具所涉及的规则有变更,以下规则涉及到的部分代码场景将报错。 6 7> **说明: ** 8> 此变更仅为工具能力增强,使原先无法检查的语法规则可被工具检查覆盖,涉及的规则并非新增规则。 9 10### 规则arkts-no-classes-as-obj 11 12将导入的class作为变量使用,示例代码如下。 13 14 ```ts 15// module1.ets 16export class C {} 17 18// module2.ets 19import { C } from './module1' 20 21let c = C // error: arkts-no-class-as-obj 22 ``` 23 24**变更影响** 25 26开发者需要适配代码,否则将导致编译失败。 27 28**关键的接口/组件变更** 29 30ArkTS语法检查工具变更。 31 32**适配指导** 33 34不符合ArkTS语法的文件需要进行适配修改,报错规则的具体说明和修改方式请参考[适配指导案例](../../../application-dev/quick-start/arkts-more-cases.md#arkts-no-classes-as-obj)。 35 36### 规则arkts-strict-typing 37 38将`X | undefined`类型赋值给.ets中`X`类型的实体,示例代码如下。 39 40 ```ts 41// module.ets 42function foo(a: number) { 43 return a + 1 44} 45 46function bar(x: number): number | undefined { 47 return x > 0 ? x : undefined 48} 49 50foo(bar(-123)) // error: arkts-strict-typing 51 ``` 52 53将`X | null`类型赋值给.ets中`X`类型的实体,示例代码如下。 54 55 ```ts 56// module.ets 57function foo(a: number) { 58 return a + 1 59} 60 61function bar(x: number): number | null { 62 return x > 0 ? x : null 63} 64 65foo(bar(-123)) // error: arkts-strict-typing 66 ``` 67 68**变更影响** 69 70开发者需要适配代码,否则将导致编译失败。 71 72**关键的接口/组件变更** 73 74ArkTS语法检查工具变更。 75 76**适配指导** 77 78不符合ArkTS语法的文件需要进行适配修改,报错规则的具体说明和修改方式请参考[适配指导案例](../../../application-dev/quick-start/arkts-more-cases.md#arkts-strict-typingstrictmodeerror)。 79 80### 规则arkts-no-ts-deps 81 82在ts文件中`import`ets文件中的实体,示例代码如下。 83 84 85 ```ts 86// lib.ts 87export class C {} 88 89 90// module.ets 91import { C } from './lib' 92 ``` 93 94**变更影响** 95 96开发者需要适配代码,否则将导致编译失败。 97 98**关键的接口/组件变更** 99 100ArkTS语法检查工具变更。 101 102**适配指导** 103 104不符合ArkTS语法的文件需要进行适配修改,报错规则的具体说明和修改方式请参考[适配指导案例](../../../application-dev/quick-start/arkts-more-cases.md#arkts-no-tsdeps)。 105 106## cl.ArkCompiler.2 ArkTS语法规则变更 107 108增加ArkTS语法规则等级,分为两个级别:错误(error)、警告(warning)。 109 110- **错误**: 必须要遵从的约束。如果不遵从该约束,将会导致程序编译失败。 111- **警告**: 推荐遵从的约束。尽管现在违反该约束不会影响编译流程,但是在将来,违反该约束可能将会导致程序编译失败。 112 113从4.0.10.11起,规则`arkts-no-definite-assignment`和`arkts-no-decorators-except-arkui`等级降为警告,不再阻塞工程编译,代码中使用`ESObject`会产生警告。 114 115同时,ArkTS语法支持以下特性: 116 117`tuple`、`keyof`、`for-of`、在数组场景下使用展开符、重导出、模块名以`.js`为后缀、`readonly`、`Encode`、`Decode`、`ParesHexOctet`、`Array.isArray`、`Object.entries`、`Object.keys`、`Object.values`、`Object.hasOwn`、`Object.hasOwnPropertyNames`、`Reflect.get`、`Reflect.set`、`Reflect.has`、`Reflect.ownKeys`、`Reflect.set`、`Symbol.iterator`、Utility类型中的`Required`和`Readonly`. 118 119**变更影响** 120 121开发者无需适配代码,无兼容性影响。 122