HarmonyOS NEXT数据类型和类

数据类型

```

//布尔类型

let isDone: boolean = false;

//数字类型

let decLiteral: number = 2023; //十进制

let binaryLiteral: number = 0b11111100111; //二进制

let octalLiteral: number = 0o3747; //八进制

let hexLiteral: number = 0x7e7; //十六进制

console.log("decLiteral",decLiteral);

console.log("binaryLiteral",binaryLiteral);

console.log("octalLiteral",octalLiteral);

console.log("hexLiteral",hexLiteral);

//字符串,使用双引号( ")或单引号(')表示字符串

let username: string = "Jacky";

//数组

let list1: number[] = [1, 2, 3]; //方式1

let list2: Array<number> = [1, 2, 3]; //方式2

//元组,元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。

let x: [string, number];

x = ['hello', 10]; // OK

x = [10, 'hello']; // Error

//枚举

enum Color {Red, Green, Blue};

let c: Color = Color.Green;

//联合类型

let myFavoriteNumber: string | number;

myFavoriteNumber = 'seven';

myFavoriteNumber = 7;

//Unknown,未知变量

let notSure: unknown = 4;

notSure = 'may be string';

console.log("notSure",notSure);

notSure = false;

console.log("notSure",notSure);

//Null和Undefined

let u: undefined = undefined;

let n: null = null;

```

```

//类的定义

class Person {

private name: string; //属性

private age: number; //属性

//构造函数

constructor(name: string, age: number) {

this.name = name;

this.age = age;

}

//方法

public getPersonInfo(): string {

return `My name is ${this.name} and age is ${this.age}`;

}

}

//类的调用

let person1 = new Person('Jacky', 18);

let info1 = person1.getPersonInfo();

console.log(info1);

//类的继承

class Employee extends Person {

private department: string;

constructor(name: string, age: number, department: string) {

super(name, age); //调用父级构造函数

this.department = department;

}

public getEmployeeInfo(): string {

return this.getPersonInfo() + ` and work in ${this.department}`;

}

}

let person2 = new Employee('Tom', 28, 'HuaWei');

let info2= person2.getPersonInfo();

let eInfo2 = person2.getEmployeeInfo();

console.log(info2);

console.log(eInfo2);

```

随着应用越来越大,通常要将代码拆分成多个文件,即所谓的模块(module)。模块可以相互加载,并可以使用特殊的指令 export 和 import 来交换功能,来调用另一个模块的函数。

导出

```

export class Person {

private name: string; //属性

private age: number; //属性

//构造函数

constructor(name: string, age: number) {

this.name = name;

this.age = age;

}

//方法

public getPersonInfo(): string {

return `My name is ${this.name} and age is ${this.age}`;

}

}

```

导入

```

import { Person } from './Person';

//类的调用

let person1 = new Person('Jacky', 18);

let info1 = person1.getPersonInfo();

console.log(info1);

```

接口

```

//接口

interface People {

say(msg:string):void

}

class Chinese implements People{

say(msg:string){

console.log("中国人说",msg);

}

}

class British implements People{

say(msg:string){

console.log("The British say",msg);

}

}

let man:People=new Chinese();

man.say("中国欢迎您");

man=new British();

man.say("Welcome to the UK")

```