宁波网站推广厂家排名,网站的链接结构包括,青岛外贸网站建站,深圳网站建设服务代码ArkTS是HarmonyOS主要应用开发语言#xff0c;以后也别在弄那个 java 和鸿蒙的混合版了#xff0c; 没必要浪费时间#xff0c; 一步到位#xff0c; 学新的吧。 简介
ArkTS围绕应用开发在TypeScript#xff08;简称TS#xff09;生态基础上做了进一步扩展#xff0c;保…ArkTS是HarmonyOS主要应用开发语言以后也别在弄那个 java 和鸿蒙的混合版了 没必要浪费时间 一步到位 学新的吧。 简介
ArkTS围绕应用开发在TypeScript简称TS生态基础上做了进一步扩展保持了TS的基本风格同时通过规范定义强化开发期静态检查和分析提升程序执行稳定性和性能 强制使用静态类型静态类型是ArkTS最重要的特性之一。如果使用静态类型那么程序中变量的类型就是确定的 禁止在运行时改变对象布局为实现最大性能ArkTS要求在程序执行期间不能更改对象布局。 限制运算符语义为获得更好的性能并鼓励开发者编写更清晰的代码ArkTS限制了一些运算符的语义。比如一元加法运算符只能作用于数字不能用于其他类型的变量。 不支持Structural typing对Structural typing的支持需要在语言、编译器和运行时进行大量的考虑和仔细的实现当前ArkTS不支持该特性。
ArkTS主要扩展了如下能力 基本语法ArkTS定义了声明式UI描述、自定义组件和动态扩展UI元素的能力 状态管理ArkTS提供了多维度的状态管理机制。在UI开发框架中与UI相关联的数据可以在组件内使用也可以在不同组件层级间传递比如父子组件之间、爷孙组件之间还可以在应用全局范围内传递或跨设备传递 渲染控制ArkTS提供了渲染控制的能力
ArkTS 基础知识
------------------编程语法 我们从小往大了学---------------------
数据类型
Number类型 number 任何整数和浮点数都可以被赋给此类型的变量
Boolean类型boolean类型由true和false两个逻辑值组成
String类型string代表字符序列可以使用转义字符来表示字符
Void类型void类型用于指定函数没有返回值
Object类型Object类型是所有引用类型的基类型。任何值包括基本类型的值它们会被自动装箱都可以直接被赋给Object类型的变量
Array类型array即数组是由可赋值给数组声明中指定的元素类型的数据组成的对象
let names: string[] [Alice, Bob, Carol];
Enum类型enum类型又称枚举类型是预先定义的一组命名值的值类型其中命名值又称为枚举常量
Union类型union类型即联合类型是由多个类型组合成的引用类型。联合类型包含了变量可能的所有类型 这个类型很神奇 开发 Android 的没有见过
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;
// 可以将类型为联合类型的变量赋值为任何组成类型的有效值
Aliases类型Aliases类型为匿名类型数组、函数、对象字面量或联合类型提供名称或为已有类型提供替代名称
变量声明
学完基本数据类型 可以学习怎么声明一个变量了var 在 ArkTS 中是不支持的 记得
let hi: string hello;
hi hello, world;
const hello: string hello;//常量
基本运算符
-*/% ^,,,(逻辑右移将a的二进制表示向右移b位左边补0) 、-、*、/、%、、、、、|、^
!
跟 java 差不多 语句
if else
//注意条件表达式可以是任何类型。但是对于boolean以外的类型会进行隐式类型转换
let s1 Hello;
if (s1) {console.log(s1); // 打印“Hello”
}let s2 World;
if (s2.length ! 0) {console.log(s2); // 打印“World”
}
Switch case
condition ? expression1 : expression2 条件表达式
for循环
for ([init]; [condition]; [update]) {statements
}
For-of语句可遍历数组或字符串
for (forVar of expression) {statements
}
While 循环
Do-while语句
Break语句
continue语句会停止当前循环迭代的执行并将控制传递给下一个迭代
try-catch-finally
try {// 可能发生异常的语句块
} catch (e) {// 异常处理
} 函数
函数声明引入一个函数包含其名称、参数列表、返回类型和函数体
//例1可选参数的格式可为name?: Type
function hello(name?: string) {if (name undefined) {console.log(Hello!);} else {console.log(Hello, ${name}!);}
}
Rest 参数 函数的最后一个参数可以是rest参数。使用rest参数时允许函数或方法接受任意数量的实参
function sum(...numbers: number[]): number {let res 0;for (let n of numbers)res n;return res;
}sum() // 返回0
sum(1, 2, 3) // 返回6
函数的作用域函数中定义的变量和其他实例仅可以在函数内部访问不能从外部访问
箭头函数函数可以定义为箭头函数箭头函数的返回类型可以省略省略时返回类型通过函数体推断
let sum (x: number, y: number): number {return x y;
}
闭包是由函数及声明该函数的环境组合而成的。该环境包含了这个闭包创建时作用域内的任何局部变量太难 看不懂 以后不用它算了
function f(): () number {let count 0;let g (): number { count; return count; };return g;
}let z f();
z(); // 返回1
z(); // 返回2
重载指定函数的不同调用方式为同一个函数写入多个同名但签名不同的函数头 类
函数完了 继续更大一点的 类类声明引入一个新类型并定义其字段、方法和构造函数
class Person {name: string surname: string constructor (n: string, sn: string) {this.name n;this.surname sn;}fullName(): string {return this.name this.surname;}
}
调用 比 java 多一个方式
let p new Person(John, Smith);
let p: Point {x: 42, y: 42}; //js 方式都是 json
static将字段声明为静态静态字段属于类本身类的所有实例共享一个静态字段
字段初始化ArkTS要求所有字段在声明时或者构造函数中显式初始化
setter和getter可用于提供对对象属性的受控访问
class Person {name: string private _age: number 0get age(): number { return this._age; }set age(x: number) {if (x 0) {throw Error(Invalid age argument);}this._age x;}
}let p new Person();
p.age; // 输出0
p.age -42; // 设置无效age值会抛出错误 空安全
默认情况下ArkTS中的所有类型都是不可为空的因此类型的值不能为空
空值合并运算符
空值合并二元运算符 ?? 用于检查左侧表达式的求值是否等于null或者undefined如果是则表达式的结果为右侧表达式 “ a ?? b” 模块
每个模块都有其自己的作用域即在模块中创建的任何声明变量、函数、类等在该模块之外都不可见除非它们被显式导出 导出
注意通过export方式导出在导入时要加{}
export class Point {x: number 0y: number 0constructor(x: number, y: number) {this.x x;this.y y;}
}
export let Origin new Point(0, 0);
export function Distance(p1: Point, p2: Point): number {return Math.sqrt((p2.x - p1.x) * (p2.x - p1.x) (p2.y - p1.y) * (p2.y - p1.y));
}
导入
import UIAbility from ohos.app.ability.UIAbility;
动态导入
import()语法通常称为动态导入dynamic import是一种类似函数的表达式用来动态导入模块
let modulePath prompt(Which module to load?);
import(modulePath)
.then(obj module object)
.catch(err loading error, e.g. if no such module)
程序入口
main 函数 注意从TypeScript到ArkTS的适配规则参考从TypeScript到ArkTS的适配规则 就到这里可以写一些简单的算法了