当前位置: 首页 > article >正文

ArkTs语法学习

1.函数声明和使用

function 函数名(参数列表) : 返回类型 {

	函数体

}

function printStudentsInfo(students: string[]) : void {
	for (let student of students) {
		console.log(student)
	}
}


printStudentsInfo(['xiaoming', 'xiaozhang', 'xiaowang', 'xiaoli']);

其中参数列表包含了:必选参数/可选参数/默认参数/剩余参数

function fun1(a: number, b ? : number) : number {

	return b ? a + b : a;

}
其中a是必须输入参数,b是可选参数
func1(a)
func2(a, b)

剩余参数:

function func3(a : number, ...Args: number[]):void {
	console.info('Args: ', JSON.stringify(Args));
}
func3(1,2,3,4,5)

1.1 箭头函数 / lambda表达式

(参数列表) : 返回类型 => { 函数体 }

箭头函数返回类型可以省略,返回类型通过函数体推断:

const printInfo = (name: string) : void = > {console.log(name)}

执行体只有一行的时候可以省略花括号:

const printInfo = (name:string)=>connsole.log(name);
printInfo("xiaoming");

箭头函数还可以作为回调函数

let students:string[] = ['xiaoming', 'xiaozhang', 'xiaowang'];
students.forEach((student: string)) => console.log(student);

1.2 闭包函数

一个函数可以将另一个函数当做返回值,保留对内部作用域的访问

function outerFunc() : () => string {
    let count = 0;
    return () : string => {
        count++;
        return count.toString();
    }
}

let invoker = outerFunc();

将一个函数声明定义为一个类型,函数参数或者返回值

type returnType = () =>string;
function outerFunc() : returnType {
    let count = 0;
    return () : string => {
        count++;
        return count.toString();
    }
}

let invoker = outerFunc();
console.log(invoker());

2. 类的声明和使用

class Person {
    name:string = 'xiaoming';
    age:number = 20;
    isMale:boolean = true;

}
const person = new Person();
consloe.log(person.name);

如果需要自定义不同类型的对象,那就需要通过constructor构造函数

class Person {
    name:string = 'xiaoming';
    age:number = 20;
    isMale:boolean = true;

    constructor(name:string, age:number, isMale:boolean) {
        this.name = name;
        thie.age = age;
        this.isMale = isMale;
    }
}


const person: Person = {name:'xiaozhang', age:29, isMale:true};

2.1 类的多态

支持封装/继承/多态

封装:

继承:extends表示继承,super关键字访问父类

class Employee extends Person {
    department: string;
    constructor(name:string, age:number, isMale:boolean, department:string) {
        super(name, age, isMale);
        this.department = department;
    }
}

多态:子类继承并且重写父类的方法,使不同的实例对象对同一行为有不同的表现

重写了父类的printInfo方法

class Employee extends Person {
    department: string;
    constructor(name:string, age:number, isMale:boolean, department:string) {
        super(name, age, isMale);
        this.department = department;
    }

    public printInfo():void {
        super.printInfo();
        console.log('working in ${this.department}');
    }
}

3.接口的声明和使用

interface AreaSize {
    Width: number;
    height: number;

    calculateAreaSize(): number;
    someMethod(): void;
}

class RectangleSize implements AreaSize {
    width: number = 0;
    height: number = 0;
    
    someMethod(): void {
        console.log(`someMethod called`);
    }

    calculateAreaSize(): number {
        this.someMethod();
        return this.width * this.height;
    }
}

4. 命名空间的概念和使用

命名空间中的变量/类等都需要通过export,供命名空间外部访问

5.模块的导入和导出

多个文件实现共同开发就需要使用模块的概念

 

在另外的文件中,就需要通过import导入变量、函数、类等

import {Person} from './Person';
const person = new Person('Xiaozhang', 20 ,true);
person.printInfo();

export from从一个模块中导出所有的导出项

更多的语言介绍参照官网:

华为开发者学堂


http://www.kler.cn/a/463365.html

相关文章:

  • WordPress Crypto 插件 身份认证绕过漏洞复现(CVE-2024-9989)
  • OpenNJet v3.2.0正式发布!
  • SQLite简介:轻量级数据库入门
  • SASS 简化代码开发的基本方法
  • linux 软链接 快捷方式 详解
  • Linux驱动开发学习准备(Linux内核源码添加到工程-Workspace)
  • ChatGPT 是通用人工智能吗
  • Linux Ubuntu24配置安装Java
  • 无人机丢失信号处理方式!
  • Transformer--Decoder
  • Mysql学习笔记之约束
  • 网络安全课程
  • JVM学习:CMS和G1收集器浅析
  • PHP Fatal error: Uncaught com_exception: Source:Kingsoft WPS Description:文档打开失败
  • 【AI日记】25.01.01 秦制两千年
  • ubuntu20.04 中文输入法安装
  • nginx-负载均衡
  • 微信小程序BackgroundAudioManager使用中的问题
  • 【每日学点鸿蒙知识】文字识别、快捷登录、输入法按钮监听、IDE自动换行、资产访问等
  • Git 入门(一)
  • 什么是 Spring 的组件(Bean)
  • C#如何操作数据库
  • HTML——48. div标签
  • ubuntu初始配置
  • 基于神经网络的车牌识别算法matlab仿真 人工智能方法 车牌识别
  • MySQL初始安装登录:ERROR 2003 (HY000): Can‘t connect to MySQL server on