装饰器(Decorator)
其实是一种特殊的函数,这个函数仅在代码加载阶段执行一次,可以被应用于类、属性、方法和参数上,从而改变原有的功能。
TypeScript或ArkTS的装饰器
,其实就对应于Java中的注解(Annotation)
。
原创大约 1 分钟
装饰器(Decorator)
其实是一种特殊的函数,这个函数仅在代码加载阶段执行一次,可以被应用于类、属性、方法和参数上,从而改变原有的功能。
TypeScript或ArkTS的装饰器
,其实就对应于Java中的注解(Annotation)
。
将类和接口定义为泛型,类的成员变量和方法可以适应不同的类型,接口也可以适用于不同类型。
// 声明泛型类
class CustomStack<T> {
value: T | undefined;
setValue(val: T): void {
this.value = val;
}
getValue(): T | undefined {
return this.value;
}
}
let s = new CustomStack<string>();
s.setValue("hello");
// 输出"hello"
console.log(s.getValue());
interface GenericInterface<T> {
doSomething(value: T): void;
}
// 使用时指定类型
class ImplementingClass implements GenericInterface<string> {
doSomething(value: string): void {
console.log(value);
}
}
let is = new ImplementingClass();
// 输出"lixingyun"
is.doSomething("lixingyun");
函数(function)
(也称为方法
)在ArkTS也中是一等公民
。
函数
通过function
关键字引入,包含名称、参数列表、返回类型和函数体。
function add(x: string, y: string): string {
let z: string = `${x} - ${y}`;
return z;
}
// 输出"hello - lixingyun"
console.log(add("hello", "lixingyun"));
// 函数的参数和返回值可以是多选的
// 参数既可以是数字,又可以字符串,返回值也一样
function foo(x: number | string): string | number {
return "2";
}
console.log(foo("1"));
ArkTS继承自TypeScript,所以也有类
和接口
的概念。
class Person {
// 成员变量在声明时,或者在构造函数中尽量显式初始化
name: string = "";
age: number = 1;
// 构造函数
constructor (x: string, y: number) {
this.name = x;
this.age = y;
}
// 成员方法
show(): string {
return this.name + " " + this.age;
}
}
// 通过new关键字创建类
let p = new Person("lixingyun", 21);
// 输出"lixingyun 21"
console.log(p.show());
// 通过字面量创建类
class Point {
x: number = 0;
y: number = 0;
}
let pt: Point = { x: 42, y: 42 };
// 输出{"x": 42, "y": 42}
console.log(pt);
和大多数语言一样,ArkTS也有两种条件语句:if
和switch
。
// 当s1为非空字符串时为true,而空字符串则为false
let s1 = "";
// 对boolean以外的类型进行判断时,会进行隐式类型转换
// 输出2
if (s1) {
console.log(1);
} else if (true) {
console.log(2);
} else {
console.log(3);
}
// 输出2
switch ("c") {
case "a":
console.log(1);
// break可选
break;
case "b":
case "c":
console.log(2);
break;
// 默认语句,可省略
default:
console.log(3);
}
ArkTS是HarmonyOS首推的应用开发语言,是Ark(华为方舟编译器)和TypeScript的结合体。