赞
踩
ArkTS是HarmonyOS优选的应用开发语言,它在TypeScript(TS)的基础上,匹配ArkUI扩展,扩展了声明式UI、状态管理等相应的能力。
他们的关系如图所示:
个人感觉和Kotlin语法很相似
基础类型如:布尔值、数字类型、数组、字符串等
let flag: boolean = false;
所有数字都是浮点数,类型是number类型,可以表示十进制、二进制、八进制、十六进制
let year: nuumber = 2023;
使用string表示字符串,可以使用""或者''。
- let name: string = "wmding";
- let str: string = 'hello world';
- let list: number[] = [1,2,3];
-
- let list: Array<number> = [1,2,3];
-
- let array: Array<number> = new Array;
- array.push(1);
- array.push(2);
- array.push(3);
表示一个已知元素数量和类型的数组,各个元素类型可以不相同。
- let x: [string, number];
- x = ['hello', 100];//需要和定义的类型匹配
- enum Color {Red, Green, Blue};
- let c: Color = Color.Red;
不清楚类型的变量
- let str: unknown = 'hello';
- str = 4;
- str = false;
- function test(): void {
- console.log(('hello world');
- }
在TS中,这两个类型不同
- let u: undefined = undefined;
- let n: null = null;
定义变量可以被定义为不同的类型
- let stringOrNumber: string | number;
- stringOrNumber = 'hello';
- stringOrNumber = 100;
- var num:number = 12;
- if (num % 2==0) {
- console.log('偶数');
- } else {
- console.log('奇数');
- }
- 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;
- }
- }
- // 可以不定义返回值类型和参数类型
- function add(x, y) {
- return x + y;
- }
-
-
- // 可以定义返回值类型和参数类型
- function add(x:number, y:number): number {
- return x + y;
- }
可以在参数名旁使用 ?实现可选参数的功能。比如,我们想让lastName是可选的:
- function buildName(firstName: string, lastName?: string) {
- if (lastName)
- return firstName + ' ' + lastName;
- else
- return firstName;
- }
-
- let result1 = buildName('Bob');
- let result2 = buildName('Bob', 'Adams');
可以一个都没有,同样也可以有任意个。 可以使用省略号( ...)进行定义:
- function getEmployeeName(firstName: string, ...restOfName: string[]) {
- return firstName + ' ' + restOfName.join(' ');
- }
-
- // 可以这样调用
- let employeeName = getEmployeeName('Joseph', 'Samuel', 'Lucas', 'MacKinzie');
-
- let employeeName = getEmployeeName('Joseph');
- function testNumber(num: number) {
- if (num > 0) {
- console.log(num + ' 是正数');
- } else if (num < 0) {
- console.log(num + ' 是负数');
- } else {
- console.log(num + ' 为0');
- }
- }
-
-
- // 如下方式调用
- testNumber(1)
-
- // 箭头函数
- let testArrowFun = (num: number) => {
- if (num > 0) {
- console.log(num + ' 是正数');
- } else if (num < 0) {
- console.log(num + ' 是负数');
- } else {
- console.log(num + ' 为0');
- }
- }
-
- //调用
- testArrowFun(-1)
使用class关键字来定义类,我们可以声明一个Person类,这个类有3个成员:一个是属性(包含name和age),一个是构造函数,一个是getPersonInfo方法,其定义如下所示。
- 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}`;
- }
- }
调用:
- let person1 = new Person('Jacky', 18);
- person1.getPersonInfo();
使用extends继承
- 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}`;
- }
- }
调用:
- let person2 = new Employee('Tom', 28, 'HuaWei');
- person2.getPersonInfo();
- person2.getEmployeeInfo();
模块可以相互加载,并可以使用特殊的指令 export 和 import 来交换功能,从另一个模块调用一个模块的函数。
使用export关键字导出:
- export class NewsData {
- title: string;
- content: string;
- imagesUrl: Array<NewsFile>;
- source: string;
-
- constructor(title: string, content: string, imagesUrl: Array<NewsFile>, source: string) {
- this.title = title;
- this.content = content;
- this.imagesUrl = imagesUrl;
- this.source = source;
- }
- }
使用import关键字导入
import { NewsData } from '../common/bean/NewsData';
- let someArray = [1, "string", false];
-
- for (let entry of someArray) {
- console.log(entry); // 1, "string", false
- }
-
-
- let list = [4, 5, 6];
-
- for (let i in list) {
- console.log(i); // "0", "1", "2",
- }
-
- for (let i of list) {
- console.log(i); // "4", "5", "6"
- }
关注我,我们一起成长。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。