ArkTS语言---基础知识

ArkTS是一种为构建高性能应用而设计的编程语言。ArkTS在继承TypeScript语法的基础上进行了优化,以提供更高的性能和开发效率。目前流行的编程语言TypeScript是在JavaScript基础上通过添加类型定义扩展而来的,而ArkTS则是TypeScript的进一步扩展。TypeScript深受开发者的喜爱,因为它提供了一种更结构化的JavaScript编码方法。ArkTS旨在保持TypeScript的大部分语法,为现有的TypeScript开发者实现无缝过渡,让移动开发者快速上手ArkTS。

一、什么是ArkTS

ArkTS是HarmonyOS生态的应用开发语言。

  • ArkTS提供了声明式UI凡是、状态管理支持等相应能力,让开发者可以更简洁、更自然的方式开发应用
  • 保持了typeScript基本语法风格的基础上,进一步通过规范强化静态检查和分析,使得在程序运行之前的开发期能检测更多错误,提升健壮性,并实现更好的运行性能
  • 针对JS/TS并发能力支持有限的问题,ArkTS对并发编程API和能力进行了增强
  • ArkTS支持TS/JS高效互操作,兼容TS/JS生态

ArkTS相对TS的约束示例:

1、强化静态类型检查:ArkTS要求所有类型在程序实际运行前都是已知的,减少运行时的类型检测,提升性能

2、限制在运行时改变对象布局:为实现最大性能,ArkTS要求在程序执行期间不能更改对象布局

ArkTS基于TypeScript的拓展----ArkTS对UI的拓展:

1、UI描述:UI描述语法提供了各种装饰器、自定义组件和UI描述机制,再配合UI开发框架中的UI内置组件、事件方法、属性方法等共同构成了应用开发的主体

2、状态管理:状态管理是实现UI相关联的数据在组件内、组件间、页面间、应用内以及跨设备传递。

二、基本语法

1、声明

ArkTS通过声明引入常量、变量、函数和类型。

1、变量声明

以关键字let开头的声明引入变量,该变量在程序执行期间可以具有不同的值。

TypeScript 复制代码
let hi: string = 'hello';
hi = 'hello, world';

2、常量声明

以关键字const开头的声明引入只读常量,该常量只能被赋值一次。

TypeScript 复制代码
const hello: string = 'hello';

3、自动类型推断

由于ArkTS是一种静态类型语言,所有数据的类型都必须在编译时确定。但是,如果一个变量或常量的声明包含了初始值,那么开发者就不需要显式指定其类型。ArkTS规范中列举了所有允许自动推断类型的场景。以下示例中,两条声明语句都是有效的,两个变量都是string类型:

TypeScript 复制代码
let hi1: string = 'hello';
let hi2 = 'hello, world';

2、数据类型

1、Number类型

ArkTS提供number和Number类型,任何整数和浮点数都可以被赋给此类型的变量。

数字字面量包括整数字面量和十进制浮点数字面量。

整数字面量包括以下类别:

  • 由数字序列组成的十进制整数。例如:0、117、-345
  • 以0x(或0X)开头的十六进制整数,可以包含数字(0-9)和字母a-f或A-F。例如:0x1123、0x00111、-0xF1A7
  • 以0o(或0O)开头的八进制整数,只能包含数字(0-7)。例如:0o777
  • 以0b(或0B)开头的二进制整数,只能包含数字0和1。例如:0b11、0b0011、-0b11

浮点字面量包括以下:

  • 十进制整数,可为有符号数(即,前缀为"+"或"-");
  • 小数点(".")
  • 小数部分(由十进制数字字符串表示)
TypeScript 复制代码
let n1 = 3.14;
let n2 = 3.141592;
let n3 = .5;
let n4 = 1e10;

function factorial(n: number): number {
  if (n <= 1) {
    return 1;
  }
  return n * factorial(n - 1);
}

2、Boolean类型

TypeScript 复制代码
let isDone: boolean = false;

// ...

if (isDone) {
  console.log ('Done!');
}

3、String类型

string代表字符序列;可以使用转义字符来表示字符。字符串字面量由单引号(')或双引号(")之间括起来的零个或多个字符组成。字符串字面量还有一特殊形式,是用反向单引号(`)括起来的模板字面量。

TypeScript 复制代码
let s1 = 'Hello, world!\n';
let s2 = 'this is a string';
let a = 'Success';
let s3 = `The result is ${a}`;

4、Void类型

void类型用于指定函数没有返回值。此类型只有一个值,同样是void。由于void是引用类型,因此它可以用于泛型类型参数。

TypeScript 复制代码
class Class<T> {
  //...
}
let instance: Class <void>

5、Object类型

Object类型是所有引用类型的基类型。任何值,包括基本类型的值(它们会被自动装箱),都可以直接被赋给Object类型的变量。

6、Array类型

array,即数组,是由可赋值给数组声明中指定的元素类型的数据组成的对象。数组可由数组复合字面量(即用方括号括起来的零个或多个表达式的列表,其中每个表达式为数组中的一个元素)来赋值。数组的长度由数组中元素的个数来确定。数组中第一个元素的索引为0。

TypeScript 复制代码
let names: string[] = ['Alice', 'Bob', 'Carol'];

7、Enum类型

enum类型,又称枚举类型,是预先定义的一组命名值的值类型,其中命名值又称为枚举常量。

TypeScript 复制代码
// 使用枚举常量时必须以枚举类型名称为前缀。
enum ColorSet { Red, Green, Blue }
let c: ColorSet = ColorSet.Red;

// 常量表达式可以用于显式设置枚举常量的值。
enum ColorSet { White = 0xFF, Grey = 0x7F, Black = 0x00 }
let c: ColorSet = ColorSet.Black;

8、Union类型

union类型,即联合类型,是由多个类型组合成的引用类型。联合类型包含了变量可能的所有类型。

TypeScript 复制代码
class Cat {
  // ...
}
class Dog {
  // ...
}
class Frog {
  // ...
}
type Animal = Cat | Dog | Frog | number
// Cat、Dog、Frog是一些类型(类或接口)

let animal: Animal = new Cat();
animal = new Frog();
animal = 42;
// 可以将类型为联合类型的变量赋值为任何组成类型的有效值

9、Aliases类型

Aliases类型为匿名类型(数组、函数、对象字面量或联合类型)提供名称,或为已有类型提供替代名称。

TypeScript 复制代码
type Matrix = number[][];
type Handler = (s: string, no: number) => string;
type Predicate <T> = (x: T) => Boolean;
type NullableObject = Object | null;
相关推荐
yilylong20 分钟前
鸿蒙(Harmony)实现滑块验证码
华为·harmonyos·鸿蒙
baby_hua20 分钟前
HarmonyOS第一课——DevEco Studio的使用
华为·harmonyos
HarmonyOS_SDK1 小时前
融合虚拟与现实,AR Engine为用户提供沉浸式交互体验
harmonyos
- 羊羊不超越 -2 小时前
App渠道来源追踪方案全面分析(iOS/Android/鸿蒙)
android·ios·harmonyos
长弓三石4 小时前
鸿蒙网络编程系列44-仓颉版HttpRequest上传文件示例
前端·网络·华为·harmonyos·鸿蒙
SameX6 小时前
鸿蒙 Next 电商应用安全支付与密码保护实践
前端·harmonyos
SuperHeroWu77 小时前
【HarmonyOS】键盘遮挡输入框UI布局处理
华为·harmonyos·压缩·keyboard·键盘遮挡·抬起
sanzk11 小时前
华为鸿蒙应用开发
华为·harmonyos
SoraLuna15 小时前
「Mac畅玩鸿蒙与硬件28」UI互动应用篇5 - 滑动选择器实现
macos·ui·harmonyos
ClkLog-开源埋点用户分析16 小时前
ClkLog企业版(CDP)预售开启,更有鸿蒙SDK前来助力
华为·开源·开源软件·harmonyos