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