鸿蒙HarmonyOS教程-TypeScript语言简介【入门篇】

ArkTS是HarmonyOS优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展,继承了TS的所有特性,是TS的超集。因此,在学习ArkTS语言之前,需要先了解一下TS语言的基础知识。

一、基础类型

1. 数字类型-number

双精度 64 位浮点值。它可以用来表示整数和分数

let decLiteral: number = 6;
2. 字符串类型-string

一个字符系列,使用单引号(')或双引号(")来表示字符串类型。反引号(`)来定义多行文本和内嵌表达式。

let name: string = "Runoob";
let words: string = `您好,今年是 ${ name } 发布 ${ years + 1} 周年`;
3. 布尔类型-boolean

表示逻辑值:true 和 false。

let flag: boolean = true;
4. 枚举-enum

枚举类型用于定义数值集合。

enum Color {Red, Green, Blue};
let c: Color = Color.Blue;
5. 数组
let arr: number[] = [1, 2]; // 在元素类型后面加上[]
let arr: Array = [1, 2]; // 使用数组泛型
6. 元组

元组类型用来表示已知元素数量和类型的数组,各元素的类型不必相同,对应位置的类型需要相同。

let x: [string, number];
x = ['Runoob', 1];
7. 特殊类型-any、null、undefined
Any

任意值是 TypeScript 针对编程时类型不明确的变量使用的一种数据类型,变量的值会动态改变时使用

let x: any = 1; // 数字类型
x = 'I am who I am'; // 字符串类型
x = false; // 布尔类型
null

null是一个只有一个值的特殊类型。表示一个空对象引用。用 typeof 检测 null 返回是 object。

var person = null; // 值为 null(空), 但类型为object
undefined

undefined 是一个没有设置值的变量。typeof 一个没有值的变量会返回 undefined。

var person; // 值为 undefined, 类型是undefined
var person = undefined; // 值为 undefined, 类型为 undefined
undefined 和 null 的区别

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);

在循环语句中支持breakcontinue关键字,跳出或继续循环

五、函数

语法格式:

// 默认
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 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导入其他文件

import someInterfaceRef = require("./SomeInterface");

最后,为了能让大家更好的去学习提升鸿蒙 (Harmony OS) 开发技术,小编连夜整理了一份30个G纯血版学习资料(含视频电子书学习文档等)以及一份在Github上持续爆火霸榜的《纯血版华为鸿蒙 (Harmony OS)开发手册》(共计890页),希望对大家有所帮助。

纯血版鸿蒙 HarmonyOS 4.0 视频学习资料

 需要以上视频学习资料小伙伴

请点击→纯血版全套鸿蒙HarmonyOS学习资料


《纯血版华为鸿蒙 (Harmony OS)开发手册》

这份手册涵盖了当前鸿蒙 (Harmony OS) 开发技术必掌握的核心知识点

纯血版鸿蒙 (Harmony OS)开发手册部分精彩内容

HarmonyOS 概念:

  • 系统定义
  • 技术架构
  • 技术特性
  • 系统安全

如何快速入门?

  • 基本概念
  • 构建第一个ArkTS应用
  • 构建第一个JS应用
  • ……


开发基础知识: 

  • 应用基础知识
  • 配置文件
  • 应用数据管理
  • 应用安全管理
  • 应用隐私保护
  • 三方应用调用管控机制
  • 资源分类与访问
  • 学习ArkTS语言
  • ……

基于ArkTS 开发:

  • Ability开发
  • UI开发
  • 公共事件与通知
  • 窗口管理
  • 媒体
  • 安全
  • 网络与链接
  • 电话服务
  • 数据管理
  • 后台任务(Background Task)管理
  • 设备管理
  • 设备使用信息统计
  • DFX
  • 国际化开发
  • 折叠屏系列
  • .……

获取以上文中提到的这份纯血版鸿蒙 (Harmony OS) 开发资料的小伙伴 

请点击→纯血版全套鸿蒙HarmonyOS学习资料


写在最后

  • 如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
  • 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
  • 关注小编,同时可以期待后续文章ing,不定期分享原创知识。
  • 想要获取更多完整鸿蒙最新VIP学习资料,请点击→纯血版全套鸿蒙HarmonyOS学习资料

你可能感兴趣的:(鸿蒙,鸿蒙入门篇,harmonyos,华为,前端,鸿蒙,鸿蒙系统,typescript,javascript)