01-ArkTS基础语法

ArkTS基础语法

基本数据类型

string、number、boolean

变量和常量的命名规则

① 只能包含数字、字母、下划线、$,不能以数字开头

② 不能使用内置关键字或保留字 (比如 let、const)

③ 严格区分大小写

let 变量名:数据类型=const 变量名:数据类型=

数组

①获得数组元素:数组名[索引]

②索引号从0开始

③数组指定的类型和存储的类型必须一致

let 数组名:数据类型[]=[数据1,数据2,数据3...]

函数

①定义函数:先定义后使用

function 函数名(形参1:类型,形参2:类型,...):返回值类型{
	函数体(编写代码对数据进行处理)
	return 处理后的结果
}

②调用函数:形参和实参要一一对应

let 变量名:类型=函数名(实参1,实参2,...)

箭头函数

let 函数名=(形参1:类型,形参2:类型,...)=>{
	函数体
	return 返回结果
}
let 变量名:类型=函数名(实参1,实参2,...)

可选参数

//可选参数,在参数名后加?,表示该参数是可选的
function sayHello(name?:string){
    //判断name是否有值,如果无值则给一个默认值
    name=name?name:'陌生人'
    console.log('你好,'+name+'!')
}
sayHello('Jack')
sayHello()

默认参数

//参数默认值,在参数后面赋值,表示参数默认值
//如果调用者没有传参,则使用默认值
function sayHello(name:string='陌生人'){
    console.log('你好,'+name+'!')
}
sayHello('Jack')
sayHello()

接口&类&对象

具备面向对象编程的基本语法,例如interface、class、enum等。也具备封装、继承、多态等面向对象基本特征

作用:用于描述一个物体的特征和行为

是一个可以存储多个数据的容器

接口&类

//定义枚举
enum Msg{
    HI='Hi',
    HELLO='Hello'
}

//定义接口
interface A{
    say(msg:Msg):void
}

//实现接口
class B implements A{
    say(msg:Msg):void{
        console.log(msg+', I am B')
    }
}

//初始化对象
let a:A=new B()//多态
//调用方法
a.say(Msg.HI)

继承

//定义矩形类
class Rectangle{
    //成员变量
    private width:number
    private length:number
    //构造函数
    constructor(width:number,lenght:number){
        this.width=width
        this.length=lenght
    }
    //成员方法
    public area():number{
        return this.width*this.length
    }
}

//定义正方形
class Square extends Rectangle{
    constructor(side:number){
        //调用父类构造
        super(side,side)
    }
}

let s=new Square(10)
console.log('正方形的面积为:'+s.area())

联合类型

是由多个类型联合组成的数据类型

let 变量:类型1|类型2|类型3=

把变量值限定在一组数据范围内选择

let 变量:数据|数据|数据

枚举(常量列表)

约定变量只能在一组数据范围内选择值

枚举名和常量名以大写开头

①定义枚举(常量列表)

enum 枚举名{
	常量1=,
	常量2=值,
	.....
}

enum ThemeColor{
	Red='#ff0f29',
	Orange='#ff7100',
	Green='#e30b30e'
}

若枚举项不赋值,默认是数字0、1、2、3…

②使用枚举类型,约束变量

let color:ThemeColor=ThemeColor.Red
//string:字符串,可以用单引号或者双引号
let msg:string='hello world'
//number:数值,整数、浮点数、进制数(加上前缀)都可以
let num:number=21
//boolean:布尔
let finished:boolean=true
//any:不确定类型,可以是任何类型,编译器不做静态类型检查
let a:any='jack'
a=21
//union:联合类型,可以是多个指定类型中的一种
let u:string|number|boolean='rose'
u=18
//object:对象
let p={name:'Jack',age:21}
console.log(p.name)
console.log(p['name'])
//Array:数组,元素可以是其他任意类型
let names:Array<string>=['Jack','Rose']
let ages:number[]=[21,18]
console.log(names[0])

条件控制

支持if-else和switch条件控制(判断是否相等用三个等号,不用类型检查,提高性能)

在TypeScriypt中,空字符串、数字0、null、undefined都被认为是false,其他值则为true

if(num){
	//num非空,可以执行逻辑
}

循环迭代

支持for和while循环,并且为一些内置类型如Array等提供了快捷迭代语法

//定义数组
let names:string[]=['Jack','Rose']
//for in迭代器,遍历得到数组角标
for(const i in names){
    console.log(i+':'+names[i])
}
//for of迭代器,直接得到元素
for(const name of names){
    console.log(name)
}

模块开发

应用复杂时,我们可以把通用功能抽取到单独的ts文件中,,每个文件都是一个模块(module)。模块可以相互加载,提高代码复用性

//在retangle.ts文件中
//定义矩形类,并通过export导出
export class Retangle{
    //成员变量
    public width:number
    public length:number
    //构造函数
    constructor(width:number,length:number){
        this.width=width
        this.length=length
    }
}

//定义工具方法,求矩形面积,并通过export导出
export function area(rec:Rectangle):number{
    return rec.width*rec.length
}
//在index.ts文件中
//通过import语法导入,from后面写文件的地址
import {Rectangle,area} from '../rectangle'

//创建rectangle对象
let r=new Rectangle(10,20)

//调用area方法
console.log('面积为:'+area(r))
  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值