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}