ArkTS是HarmonyOS优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展,继承了TS的所有特性,是TS的超集。因此,在学习ArkTS语言之前,需要先了解一下TS语言的基础知识。
双精度 64 位浮点值。它可以用来表示整数和分数
let decLiteral: number = 6; |
一个字符系列,使用单引号(')或双引号(")来表示字符串类型。反引号(`)来定义多行文本和内嵌表达式。
let name: string = "Runoob"; |
|
let words: string = `您好,今年是 ${ name } 发布 ${ years + 1} 周年`; |
表示逻辑值:true 和 false。
let flag: boolean = true; |
枚举类型用于定义数值集合。
enum Color {Red, Green, Blue}; |
|
let c: Color = Color.Blue; |
let arr: number[] = [1, 2]; // 在元素类型后面加上[] |
|
let arr: Array |
元组类型用来表示已知元素数量和类型的数组,各元素的类型不必相同,对应位置的类型需要相同。
let x: [string, number]; |
|
x = ['Runoob', 1]; |
任意值是 TypeScript 针对编程时类型不明确的变量使用的一种数据类型,变量的值会动态改变时使用
let x: any = 1; // 数字类型 |
|
x = 'I am who I am'; // 字符串类型 |
|
x = false; // 布尔类型 |
null是一个只有一个值的特殊类型。表示一个空对象引用。用 typeof 检测 null 返回是 object。
var person = null; // 值为 null(空), 但类型为object |
undefined 是一个没有设置值的变量。typeof 一个没有值的变量会返回 undefined。
var person; // 值为 undefined, 类型是undefined |
|
var person = undefined; // 值为 undefined, 类型为 undefined |
null 和 undefined 的值相等,但类型不等:
typeof undefined // undefined |
|
typeof null // object |
|
null === undefined // false (类型不等) |
|
null == undefined // true (值相等) |
var [变量名] : [类型] = 值;
var uname = "Runoob"; |
|
let password = "123456"; |
const PI = 3.141592653589793; |
// if |
|
var num:number = 2 |
|
if(num > 0) { |
|
console.log(num+" 是正数") |
|
} else if(num < 0) { |
|
console.log(num+" 是负数") |
|
} else { |
|
console.log(num+" 不是正数也不是负数") |
|
} |
|
// switch |
|
var grade:string = "A"; |
|
switch(grade) { |
|
case "A": { |
|
console.log("优"); |
|
break; |
|
} |
|
case "B": { |
|
console.log("良"); |
|
break; |
|
} |
|
case "C": { |
|
console.log("及格"); |
|
break; |
|
} |
|
case "D": { |
|
console.log("不及格"); |
|
break; |
|
} |
|
default: { |
|
console.log("非法输入"); |
|
break; |
|
} |
|
} |
|
// for |
|
var num:number = 5; |
|
var i:number; |
|
var factorial = 1; |
|
for(i = num;i>=1;i--) { |
|
factorial *= i; |
|
} |
|
// for in |
|
var j:any; |
|
var n:any = "a b c"; |
|
for(j in n) { |
|
console.log(n[j]); |
|
} |
|
// for of |
|
let someArray = [1, "string", false]; |
|
for (let entry of someArray) { |
|
console.log(entry); // 1, "string", false |
|
} |
|
// forEach |
|
let list = [4, 5, 6]; |
|
list.forEach((val, idx, array) => { |
|
// val: 当前值 |
|
// idx:当前index |
|
// array: Array |
|
}); |
|
// every |
|
let list = [4, 5, 6]; |
|
list.every((val, idx, array) => { |
|
// val: 当前值 |
|
// idx:当前index |
|
// array: Array |
|
return true; // Continues |
|
// Return false will quit the iteration |
|
}); |
|
// while |
|
var num:number = 5; |
|
var factorial:number = 1; |
|
while(num >=1) { |
|
factorial = factorial * num; |
|
num--; |
|
} |
|
// do while |
|
var n:number = 10; |
|
do { |
|
console.log(n); |
|
n--; |
|
} while(n>=0); |
在循环语句中支持break
和continue
关键字,跳出或继续循环
语法格式:
// 默认 |
|
function function_name(){} |
|
// 带返回值,:后的T为返回值类型 |
|
function function_name(): T{} |
|
// 带参函数,支持默认值 |
|
function function_name(param1[:type],param2[:type] = default_value) {} |
|
// 带剩余参数,函数的最后一个命名参数 restOfName 以 ... 为前缀,它将成为一个由剩余参数组成的数组 |
|
function buildName(firstName: string, ...restOfName: string[]) { |
|
return firstName + " " + restOfName.join(" "); |
|
} |
|
// 匿名函数 |
|
var res = function( [arguments] ) { ... } |
|
// 构造函数 |
|
var res = new Function ([arg1[, arg2[, ...argN]],] functionBody) |
|
// Lambda 函数 |
|
( [param1, param2,…param n] )=>statement; |
语法格式:
class class_name { |
|
// 类作用域 |
|
} |
示例:
class Car { |
|
// 字段 |
|
engine:string; |
|
// 构造函数 |
|
constructor(engine:string) { |
|
this.engine = engine |
|
} |
|
// 方法 |
|
disp():void { |
|
console.log("发动机为 : "+this.engine) |
|
} |
|
} |
|
var obj = new Car("Engine 1") |
|
obj.field_name // 访问属性 |
|
obj.function_name() // 访问方法 |
使用extends作为关键字:
class Shape { |
|
Area:number |
|
constructor(a:number) { |
|
this.Area = a |
|
} |
|
test() {} |
|
} |
|
class Circle extends Shape { |
|
disp():void { |
|
console.log("圆的面积: "+this.Area) |
|
} |
|
test() { |
|
super.test() // 重写父类方法 |
|
} |
|
} |
|
var obj = new Circle(223); |
|
obj.disp(); |
|
obj.test; |
语法定义:
interface interface_name { |
|
} |
interface IPerson { |
|
firstName:string, |
|
lastName:string, |
|
sayHi: ()=>string |
|
} |
|
var customer:IPerson = { |
|
firstName:"Tom", |
|
lastName:"Hanks", |
|
sayHi: ():string =>{return "Hi there"} |
|
} |
接口可以通过关键字extends来继承其他接口以扩展自己。
interface Person { |
|
age:number |
|
} |
|
interface Musician extends Person { |
|
instrument:string |
|
} |
|
var drummer = |
|
drummer.age = 27 |
|
drummer.instrument = "Drums" |
interface IParent1 { |
|
v1:number |
|
} |
|
interface IParent2 { |
|
v2:number |
|
} |
|
interface Child extends IParent1, IParent2 { } |
|
var Iobj:Child = { v1:12, v2:23} |
通过关键字import导入其他文件
import someInterfaceRef = require("./SomeInterface"); |
最后,为了能让大家更好的去学习提升鸿蒙 (Harmony OS) 开发技术,小编连夜整理了一份30个G纯血版学习资料(含视频、电子书、学习文档等)以及一份在Github上持续爆火霸榜的《纯血版华为鸿蒙 (Harmony OS)开发手册》(共计890页),希望对大家有所帮助。
需要以上视频学习资料小伙伴
请点击→纯血版全套鸿蒙HarmonyOS学习资料
这份手册涵盖了当前鸿蒙 (Harmony OS) 开发技术必掌握的核心知识点
HarmonyOS 概念:
如何快速入门?
开发基础知识:
基于ArkTS 开发:
获取以上文中提到的这份纯血版鸿蒙 (Harmony OS) 开发资料的小伙伴
请点击→纯血版全套鸿蒙HarmonyOS学习资料