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