ArkTS基本知识1、ArkTS语言特点1.1、对象字面量必须标注类型1.2、不支持 Structural Typing结构化类型2、ArkTS基本数据类型2.1、number 类型2.2、boolean 类型2.3、string 类型3、高级数据类型3.1、枚举类型3.2、联合类型3.3、数组类型4、运算符4.1、赋值运算符4.2、比较运算符4.3、位运算符4.4、逻辑运算符4.5、算术运算符5、语句5.1、条件语句5.2、循环语句for5.3、while 语句5.4、throw 和 try 语句5.5、switch 语句代码部分1、ArkTS语言特点参考文档ArkTS语言介绍1.1、对象字面量必须标注类型为了清晰展示 ArkTSETS与 TypeScriptTS之间的差异我分别创建了两个文件进行演示。在两个文件中均输入如下代码conststu{name:zhangsan,age:19}可以看到在 ArkTS 中出现了报错提示需要显式声明类型而在 TypeScript 中相同代码则不会报错因此在 ArkTS 中必须为对象字面量显式声明类型例如1.2、不支持 Structural Typing结构化类型我们再通过一段代码来验证这一点interfaceAni{name:string,age:number,}functiongetName(obj:Ani){returnobj.name;}constani{name:zhangsan,age:18,gender:男};getName(ani);在 TypeScript 中即使传入的对象包含额外属性如gender只要满足接口定义的必要字段就不会报错但在 ArkTS 中同样的代码会报错这是因为 ArkTS 不支持 structural typing鸭子类型要求对象的类型必须严格匹配。因此我们需要将接口扩展以包含所有实际使用的属性此处为了避免命名冲突已将接口名改为大写2、ArkTS基本数据类型2.1、number 类型2.2、boolean 类型boolean类型仅有两个逻辑值true和false通常用于条件判断语句中。2.3、string 类型string类型表示字符序列支持使用转义字符。字符串字面量可以用单引号、双引号或反引号定义。其中反引号用于定义模板字符串支持嵌入表达式。示例代码如下EntryComponentstruct Index{build(){Column(){Button(数字类型).onClick((){letn13.14;letn23.141592;letn30.5;letn41e2;console.log(数字类型,n1);console.log(数字类型,n2);console.log(数字类型,n3);console.log(数字类型,n4);})Button(布尔类型).onClick((){letisFDone:booleanfalse;letisTDone:booleantrue;console.log(布尔类型,isFDone);console.log(布尔类型,isTDone);})Button(字符串类型).onClick((){lets1Hello, world!\n;lets2this is a string;letaSuccess;lets3The result is${a};console.log(字符串类型,s1);console.log(字符串类型,s2);console.log(字符串类型,a);console.log(字符串类型,s3);})}}}3、高级数据类型3.1、枚举类型enum枚举是一种预先定义的一组命名常量的值类型。使用枚举常量时必须以枚举类型的名称作为前缀。3.2、联合类型联合类型允许一个变量拥有多种可能的类型使用|分隔不同类型。3.3、数组类型数组是由若干个符合指定元素类型的值组成的集合。可通过数组字面量用方括号[]包裹进行初始化。数组索引从 0 开始长度由元素数量决定。4、运算符4.1、赋值运算符基础赋值运算符为用于将右侧的值赋给左侧变量。复合赋值运算符将运算与赋值结合例如a b等价于a a b。支持的复合赋值运算符包括、-、*、/、%、、、、、|、^。4.2、比较运算符4.3、位运算符4.4、逻辑运算符4.5、算术运算符5、语句5.1、条件语句5.2、循环语句for5.3、while 语句5.4、throw 和 try 语句5.5、switch 语句代码部分EntryComponentstruct Index{build(){Column(){// 数据类型/* Button(数字类型).onClick((){ let n1 3.14; let n2 3.141592; let n3 0.5; let n4 1e2; console.log(数字类型,n1); console.log(数字类型,n2); console.log(数字类型,n3); console.log(数字类型,n4); }) Button(布尔类型).onClick((){ let isFDone: boolean false; let isTDone: boolean true; console.log(布尔类型,isFDone); console.log(布尔类型,isTDone); }) Button(字符串类型).onClick((){ let s1 Hello, world!\n; let s2 this is a string; let a Success; let s3 The result is ${a}; console.log(字符串类型,s1) console.log(字符串类型,s2) console.log(字符串类型,a) console.log(字符串类型,s3) }) Button(枚举类型).onClick((){ let grade Grade.优 if (grade A) { console.log(枚举类型优); }else { console.log(枚举类型错误); } }) Button(联合类型).onClick((){ let GradeAll : string | number | null 1; console.log(联合类型,GradeAll) GradeAll null; console.log(联合类型,GradeAll) GradeAll A; console.log(联合类型,GradeAll) }) Button(数组类型).onClick((){ // 数组定义 let arr:string[] [1,2,3,4] let arr2: number[] new Array(10) // 下标 console.log(数组类型,arr[3]); // 支持动态扩容 arr2[100]100 console.log(数组类型,arr2.length); }) */// 运算符/* // 赋值运算符 Button(赋值运算符).onClick((){ let a:number 10 let b:number 20 let c:number 30 console.log(赋值运算符,a,b,c); }) // 算数运算符 Button(算数运算符).onClick((){ let a 10 let b 20 console.log(算数运算符加法,ab); console.log(算数运算符减法,a-b); console.log(算数运算符乘法,a*b); console.log(算数运算符除法,a/b); console.log(算数运算符取余,a%b); console.log(算数运算符自增,a); console.log(算数运算符自减,a--); }) // 比较运算符 Button(比较运算符).onClick((){ let a 10 let b 20 console.log(大于,ab); console.log(小于,ab); console.log(等于,ab); console.log(不等于,a!b); console.log(大于等于,ab); console.log(小于等于,ab); }) // 逻辑运算符 Button(逻辑运算符).onClick((){ let a 10 let b 20 console.log(逻辑与,a5 b10); console.log(逻辑或,a5 || b10); console.log(逻辑非,!(a5)); }) // 位运算符 Button(位运算符).onClick((){ let a 10 let b 20 console.log(按位与,ab); console.log(按位或,a|b); console.log(按位异或,a^b); console.log(按位取反,~a); console.log(左移,a1); console.log(右移,a1); }) */// 语句/* Button(条件语句).onClick((){ let grade Grade.优 if (grade A) { console.log(枚举类型优); }else { console.log(枚举类型错误); } }) // 循环 Button(循环语句).onClick((){ for (let i 0; i 10; i) { console.log(循环语句,i); } }) // while循环 Button(while循环).onClick((){ let i 0 while (i 10) { console.log(while循环,i); i } }) //throw和try语句 Button(throw和try语句).onClick((){ try { throw new Error(throw和try语句); }catch (e){ console.log(e.message); } }) //switch语句 Button(switch语句).onClick((){ let grade A switch (grade) { case A: console.log(switch语句优); break; case B: console.log(switch语句良); break; case C: console.log(switch语句中); break; case D: console.log(switch语句差); break; } }) */}}}enumGrade{优A,良B,中C,差D,}