HarmonyOS
HarmonyOS官网从零学习笔记
该文章是 TS(TypeScript)的基础语法。
ArkTS开发语言介绍
ArkTS是HarmonyOS优选的主力应用开发语言。它在TypeScript(简称TS)的基础上,匹配ArkUI框架,扩展了声明式UI、状态管理等相应的能力,让开发者以更简洁、更自然的方式开发跨端应用。要了解什么是ArkTS,我们首先要了解下ArkTS、TypeScript和JavaScript之间的关系:
JavaScript是一种属于网络的高级脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。
TypeScript 是 JavaScript 的一个超集,它扩展了 JavaScript 的语法,通过在JavaScript的基础上添加静态类型定义构建而成,是一个开源的编程语言。
ArkTS兼容TypeScript语言,拓展了声明式UI、状态管理、并发任务等能力。
由此可知,TypeScript是JavaScript的超集,ArkTS则是TypeScript的超集,他们的关系如下图所示:
总结:
TypeScript = JS + 静态类型
ArkTS = TS超集 + 声明式UI + 状态管理 +并发 等。
TypeScript 基本类型
- 布尔值boolean ,
- 数字number,
- 字符串String,
- 数组[]
- 元组 可多种类型数组[]
- 枚举
- Unknown 未知类型
- Void 方法
- Null 和 Undefined 空和未定义
- 联合类型 |
let isDone: boolean = false;
数字
let decLiteral: number = 2023;
let binaryLiteral: number = 0b11111100111;
let octalLiteral: number = 0o3747;
let hexLiteral: number = 0x7e7;
String
let name: string = "Jacky";
name = "Tom";
name = 'Mick';
数组
let list: number[] = [1, 2, 3];
let list: Array<number> = [1, 2, 3];
元组
元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。 比如,你可以定义一对值分别为 string和number类型的元组。
let x: [string, number];
x = ['hello', 10]; // OK
x = [10, 'hello']; // Error
枚举
enum类型是对JavaScript标准数据类型的一个补充,使用枚举类型可以为一组数值赋予友好的名字。
enum Color {Red, Green, Blue};
let c: Color = Color.Green;
Unknown
有时候,我们会想要为那些在编程阶段还不清楚类型的变量指定一个类型。这种情况下,我们不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查。那么我们可以使用unknown类型来标记这些变量。
let notSure: unknown = 4;
notSure = 'maybe a string instead';
notSure = false;
Void
当一个函数没有返回值时,你通常会见到其返回值类型是 void。
function test(): void {
console.log('This is function is void');
}
Null 和 Undefined
TypeScript里,undefined和null两者各自有自己的类型分别叫做undefined和null。
let u: undefined = undefined;
let n: null = null;
联合类型
联合类型(Union Types)表示取值可以为多种类型中的一种。
let myFavoriteNumber: string | number;
myFavoriteNumber = 'seven';
myFavoriteNumber = 7;
条件语句
- if-else
- switch - case
函数
- 基本结构
- 匿名函数
- 可选参数 ?
- 剩余参数 …
- 箭头函数 lamda表达式
基本结构
function 函数名(参数) : 返回值{
函数体
}
匿名函数
let myAdd = function (x, y) {
return x + y;
};
类 (与java类似)
基本结构
//函数名
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}`;
}
}
继承 (多态)
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}`;
}
}
导包 import 和export
要在使用该类的时 -----加入 export 关键字 —export class
export class Person{
}
使用该类的具体包 ---- 导包 import {命名(别名)} from 具体位置(相对位置)
import {PersonNew} from ../bean/Person
// 使用
PersonNew()