• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2025 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16// TypeScript: treats 'n' as having type number
17// ArkTS: treats 'n' as having type int to reach max code performance
18
19import {
20  Entry,
21  Component,
22  State,
23  RelativeContainer,
24  Text,
25  AppStorage,
26} from '@kit.ArkUI';
27
28let a: number = 1.0;
29
30a = 1.0; // OK
31a = 1.5; // CTE in ArkTS: Type 'double' can't be assigned to type 'int'
32
33a += 1.0; // OK
34a += 1.5; // ArkTS: Result is integer value
35
36console.log(a + 1.0); // OK
37console.log(a - 0.5); // OK
38console.log(a / 2.0); // ArkTS: integer division is used, result is integer value
39console.log(a / 2.5); // OK
40console.log(2.0 / a); // ArkTS: integer division is used, result is integer value
41console.log(2.5 / a); // OK
42
43let b: number = 1.0;
44a = b; // CTE in ArkTS: Type 'double' can't be assigned to type 'int'
45a += b; // ArkTS: Result is integer value
46console.log(a + b); // OK
47console.log(a / b); // OK
48
49let c: number = 1.5;
50a = c; // CTE in ArkTS: Type 'double' can't be assigned to type 'int'
51a += c; // ArkTS: Result is integer value
52console.log(a + c); // OK
53console.log(a / c); // OK
54
55let d: number = 2.0;
56a = d; // OK
57a += d; // OK
58console.log(a + d); // OK
59console.log(a / d); // ArkTS: integer division is used, result is integer value
60
61let n: number = 2.0;
62
63let f: number = 1.0
64
65let g: number[] = [1.0, 2.0, 3.0]
66
67let x!: number
68
69let t8: number = Infinity
70
71let t9: number = -Infinity;
72
73let t10: number = NaN;
74
75let t11: number = Number.MAX_VALUE;
76
77let t12: number = Number.MIN_VALUE;
78
79let o:number = 123.0;
80
81const oo:number = 123.0;
82
83let o2: number = o;
84
85let o3: number = oo;
86
87class A{
88   a: number = 1.0;
89   constructor() {
90  }
91}
92
93let t2: number = +123.0;
94
95let t3: number = -234.0;
96
97let num: number = Math.floor(4.8); // num 可能是 int
98
99let value: number = parseInt("42"); // value 可能是 int
100
101
102function multiply(x: number = 2.0, y: number = 3.0): number {
103 return x * y;
104}
105
106function divide(x: number, y: number): number {
107  return x / y;
108}
109
110function identity<T>(value: T): T {
111  return value;
112}
113identity(42.0);
114
115let an_array: number[] = [1.0, 2.0, 3.0]
116
117let g: number = an_array[]
118
119const a: number = 1.0
120
121enum Test {
122  A = 1.0,  // 显式赋值为 1
123  B = 2.0   // 显式赋值为 2
124}
125const test: number = Test.A;
126
127@Entry
128@Component
129struct Index2 {
130  @State message: string = 'Hello World';
131  readonly c1: number = 1.0; // int
132  readonly c4: number = 1.7; // float
133  readonly c5: number = 0x123; // 16进制
134  readonly c6: number = 0o123; //8进制
135  readonly c7: number = 0b101; //2进制
136  readonly c8: number[] = [1.0, 2.0, 3.0];
137
138build() {
139    RelativeContainer() {
140      Text(this.message)
141        .onClick(() => {
142        })
143    }
144  }
145}
146
147const c1: number = 1.0;
148
149export class G{
150  readonly a5: number = 4.0;
151}
152
153const fingerprintPositionY: number = AppStorage.get<number>(FingerprintConstants.COORDINATE_Y_OF_FINGERPRINT_UD_SCREEN_IN_PX) ?? 0.0;
154
155private doCloseFolderBackgroundAnimation(): (() => {
156    ({
157        openFolderLayout: openFolderLayout, : .getGridSwiperLayout().bgHeight = openFolderLayout.getBackgroundLayout().closedHeight,
158        openFolderLayout: openFolderLayout, : .getGridSwiperLayout().bgWidth = openFolderLayout.getBackgroundLayout().closedWidth,
159        let: let, pos: pos,
160        pos: pos,
161        let: let, editModeTranslateY: editModeTranslateY,
162        if(pos) { }, : .length > 1.0
163    });
164    return undefined;
165})() {
166      let translateXForScreenSplit: number = AppStorage.get<number>('translateXForScreenSplit') ?? 0.0 as number;
167      let screenWidth: number = AppStorage.get<number>('screenWidth') as number;
168      let screenHeight: number = AppStorage.get<number>('screenHeight') as number;
169      if (screenWidth > screenHeight) {
170        log.showInfo('doCloseFolderBackgroundAnimation screenWidth: ' + screenWidth + ', height: ' + screenHeight);
171        screenWidth = screenHeight;
172      }
173      openFolderLayout.getGridSwiperLayout().bgTranslateX = pos[0] - screenWidth / 2.0 + translateXForScreenSplit;
174      openFolderLayout.getGridSwiperLayout().bgTranslateY = pos[1] + editModeTranslateY -
175        openFolderLayout.getBackgroundLayout().closedHeight * 0.5 - openFolderLayout.getBackgroundLayout().openedMargin;
176    }
177}
178
179let f: number = 0.0;
180let b5: number = 0.0;
181f = b5; // OK
182
183let e: number = 0.0;
184let g1: number = 0.0;
185
186e += g1; // OK
187e -= g1; // OK
188e *= g1; // OK
189e /= g1; // OK
190e <<= g1; // OK
191e >>= g1; // OK
192e &= g1; // OK
193e = e & 3.0; // OK
194e = e | 3.0; // OK
195let arr1: number[] = [1.0, 2.0, 3.0]
196e += arr1[0]; // OK
197
198let a: number = 0.0;
199a = fun1();
200a = fun2()!;
201
202function fun1():number{
203  return 1.0;
204}
205
206function fun2():number|undefined{
207  return 1.0;
208}
209
210import { ArrayList } from "@kit.ArkTS";
211
212let arr = new ArrayList<number>()
213for (let i:number = 0.0; i < 100.0; i++) {
214  arr.add(i)
215}
216let cancelIds:ArrayList<number> = arr.subArrayList(6.0, 86.0)
217let a: Array<number> = Array.from(cancelIds)
218let arr1: Array<number> = Array.from(new ArrayList<number>())
219
220let a:number = 0.000;
221
222const b:number = 0.000;
223
224export enum WalletStageValue {
225  DEFAULT = 0.0,
226  SWIPE_INIT = -1.0,
227  SELECT_CARD = 1.0,
228  SWIPE_DOING = 2.0,
229  SWIPE_SUCCEED = 3.0,
230  SWIPE_FAILED = 4.0,
231  SWIPE_FINISHED = 5.0,
232}
233
234export enum AnimationStage {
235  INIT = 0.0,
236  ENTER = 1.0,
237  ROTATING = 2.0,
238  EXIT_START = 3.0,
239  EXIT_END = 4.0,
240}