一 ArkTS
1.1 声明(变量类型必须写,初始化必须写,末尾必须加分号)
let 是可变,const 是不可变,该常量只能被赋值一次。
const hello: string = 'hello';
let num:number = 1
// 不允许使用val
var age:number = 1;
// 以下三个不能用
// let num3:undefined
// let num4:null
// let num5:any
1.2 类型
1.2.1 string
可以使用单引号或者双引号表示,string拼接不能用+(可以用但不推荐),只能用反单引号(只有11以上才能用)
let a:string = 'Success';
let a1:string = "dddd"
let s3:string = `The result is ${a}`;
1.2.2 联合类型
union类型,即联合类型,是由多个类型组合成的引用类型。联合类型包含了变量可能的所有类型。
declare type ResourceStr = string | number;
基础类型
typeof str == 'string'
obj使用 instanceof
dog instanceof Dog
1.3 数组
let names: string[] = [‘Jack’, ‘Rose’]
遍历优先使用 forEach
//定义数组
let names: string[] = ['Jack', 'Rose']
names.forEach((value: string, index: number, array: string[]) => {
})
for (let i = 0; i < names.length; i++) {
console.log(i + ':' + names[i])
}
//for of 迭代器,直接得到元素
for (let name of names) {
}
//禁止使用 for in 迭代器,
for (let i in names) {
console.log(i + ':' + names[i])
}
1.2 方法
function 方法名:返回类型,返回类型void也最好写上,参数的类型也必须写
// 无参数
function add():void
// 有参数
function add(name:string):void{
}
// 可选参数,可以用undefined
function add(name:string,age?:number):void{
// 虽然不推荐使用 undefined 或者是 null,但是可以判断是否初始化
if(age == null)
if(age == undefined)
// 如果a没有给值,那么就用0 ,
let ageTwo = age?age:0
}
//默认参数(默认参数不可以和可选参数共同使用)
function add(name:string,age:number = 0):void{
}
// api 11 不允许
let funB = function (a: number, b: number) {
}
// 可以变长参数
function add(...numbers: number[]){
let result: number = 0;
for (let i = 0; i < numbers.length; i++) {
result = result + numbers[i]
}
// 循环
numbers.forEach((value, index, arr) => {
log(value + '--' + index + '---' + arr)
})
// for of 也可以用
for (let n of numbers) {
log(n + "")
}
return result;
}
1.4 箭头函数
相当于java中的lamalda表达式
type Handler = (s: string, no: number) => string;
(event: ClickEvent) => void//这个就是箭头函数
onClick(event: (event: ClickEvent) => void): T;
1.5 条件语句
1.5.1 if else
条件表达式可以是任何类型。但是对于boolean以外的类型,会进行隐式类型转换:是否!=null
if (condition1) {
// 语句1
} else if (condition2) {
// 语句2
} else {
// else语句
}
let s1 = 'Hello';
if (s1) {
console.log(s1); // 打印“Hello”
}
1.5.2 switch
let s1 = 'Hello';
switch (s1) {
case "label1": // 如果label1匹配,则执行
break; // 可省略
case "label2":
case "label3": // 如果label2或label3匹配,则执行
break; // 可省略
default:
}
1.5 三元表达式
condition ? expression1 : expression2
let s: string = '1';
let newS: string = s ? s : ""
let newS2: string = 1>0 ? '大于0' : "小于0"
1.6 错误处理
throw 语句用于抛出异常或错误,try catch
getName() : string {
throw new Error('this error')
return '';
}
try {
// 可能发生异常的语句块
} catch (e) {
// 异常处理
}
1.7 枚举
enum Color {
// 一般也不会写 后面的值
Red = 0xFF0000,
Green = 0xFFFF00,
Blue = 0xFFFFFF,
// 禁止用不同的类型
// Black = "0xFFFFFF",
}
1.8 类
类的属性不用let,方法不用加 function,
也是单继承,多实现,
修饰符号有public protect private,默认就是public。
类中使用属性和方法时,必须使用this.,否则找不到,访问父类属性和方法只能super.
静态方法静态属性,必须使用Class去拿,否则拿不到,
如果类或者接口只有属性,初始化的时候可以使用{}
继承属性不可以重写,方法不可以