鸿蒙5:常用语法

一.常用类型转换

1.字符串转数字
  • Number():字符串 直接转数字,转换失败返回NaN(字符串中包含非数字)
  • parseInt():去掉小数部分 转数字,转换失败返回NaN
  • parseFloat():保留小数部分 转数字,转换失败返回NaN
let string1:string ="1.7"
let string2:string ="1.7a"
let string3:string ="1.7"

console.log("string1",parseInt(string1))//1
console.log("string2",parseFloat(string2))//1.7
console.log("string3",parseFloat(string3))//1.7
console.log("string3",Number(string3))//1.7
console.log("string3",Number(string2))//Nan
2.字符串转数字
  • toString():数字直接转字符串
  • toFixed():四舍五入转字符串,可设置保留几位小数
let number1:number=1.1
let number2:number=1.9

console.log("number1",number1.toString())//1.1
console.log("number2",number1.toFixed())//1
console.log("number3",number2.toFixed())//2
console.log("number4",number2.toFixed(2))//1.90

二.点击事件

  • 语法:onClick( (参数) => {} )
    Text("点击事件")
          .padding(40)
          .backgroundColor(Color.Gray).onClick(() => {
          AlertDialog.show({ message: "这是一个弹窗" })
        })

三.状态管理

1. 状态管理的基本流程图
image.png
2. 普通变量 和 状态变量 的区别?
  • 普通变量:只能在初始化时渲染,后续将不会再刷新。
  • 状态变量:需要装饰器装饰,改变会引起 UI 的渲染刷新。
@Entry
@Component
struct Index {
  @State message: string = 'hello';

  build() {
    Column({ space: 2 }) {
      Stack({ alignContent: Alignment.TopStart }) {
        Text("点击事件$"+this.message)
          .padding(40)
          .backgroundColor(Color.Gray).onClick(() => {
          this.message="你好ArkTs"
        })

      }
    }
  }
}

四.运算符

1.算数运算符 和 赋值运算符
image.png
2.一元运算符

常见一元运算符:++ 和 --

  • 后置写法:先赋值后自增/自减
  • 前置写法:先自增/自减再赋值
let number3:number=10
let number4:number=10
console.log("number10",number3++)//10
console.log("number11",++number4)//11
3.运算符优先级
image.png

四.数组

  • 查找: 数组名[下标]、数组名.length
  • 修改: 数组名[下标] = 新值
  • 开头增加: : 数组名.unshift(数据1, 数据2, ...)
  • 结尾增加 : 数组名.push(数据1, 数据2, ...)
  • 从开头删: 数组名.shift()
  • 从结尾删:数组名.pop()
  • 任意位置增加或删除: 数组名.splice(操作的起始位置, 删除的个数, 新增1, 新增2, ......)
let devices: string[]=["儿童手表","摄像机","门铃"]
let devices: string[]=["儿童手表","摄像机","门铃"]

console.log("devices",devices[0])//儿童手表
console.log("devices",devices.length)//3
devices[0]="行车记录仪"
console.log("devices",devices)//行车记录仪、摄像机、门铃
devices.push("儿童手表")
console.log("devices",devices)//行车记录仪、摄像机、门铃、儿童手表
devices.unshift("定位器")
console.log("devices",devices)//定位器,行车记录仪、摄像机、门铃、儿童手表
devices.shift()
console.log("devices",devices)//行车记录仪、摄像机、门铃、儿童手表
devices.pop()
console.log("devices",devices)//行车记录仪、摄像机、门铃
devices.pop()
console.log("devices",devices)//行车记录仪、摄像机、
devices.splice(1,1)//行车记录义、
console.log("devices",devices)//行车记录义
devices.splice(0,1,"儿童手表",'记录仪')//儿童手表,记录仪
console.log("devices",devices)//儿童手表,记录仪

五.ForEach-渲染控制

语法: ForEach(arr, (item, index) => {})

  @State message: number[] =[1,2,3,4];
ForEach(this.message,(numberText:number,index)=>{
        Text("循环个数"+numberText)
          .padding(10)
          .backgroundColor(Color.Gray).onClick(() => {
          this.message[0]++
        })
      })

六.Class类

1.修饰符:修饰符包括:readonly、private、protected 和 public。省略不写默认为 public
  • readonly:只读,都可以访问
  • private:私有,类内部可以访问
  • protected:保护,类及子类可以访问
  • public:公共,都可以访问
2.Class 类 – instanceof

instanceof 运算符可以用来检测某个对象是否是某个类的实例
用法:实例对象 instanceof Class

七.剩余参数 和 展开运算符

剩余参数 和 展开运算符 ...
剩余参数的语法,我们可以将 函数 或 方法 中一个不定数量的参数表示为一个数组

// 剩余参数只能写在最后一位
function 函数名(参数1,参数2,...剩余参数数组){
// 逻辑代码
// 之前的参数:挨个获取即可 // 剩余参数:以数组的形式获取
}

function sum(numA:number,numB:number,...theArgs:number[]) {
        let total = numA+numbB;
        for (const arg of theArgs) {
                  total += arg;
          }
      return total; 
}
console.log(sum(1, 2, 3).toString()) // 6 
console.log(sum(1, 2, 3, 4).toString()) // 10

出于程序稳定性,以及运行性能考虑,在 ArkTS 中 ...(展开运算符) 只能用在数组上

const numArr1: number[] = [1, 2, 3, 4] 
const numArr2: number[] = [5, 6, 7]
// 合并到一起
const totalArr: number[] = [...numArr1, ...numArr2]

八.接口

  • 接口继承使用的关键字是 extends
interface IAnimal {
  name: string
}}

interface ICat extends IAnimal {
  color: string
  const cat: ICat = { name: '加菲猫', color: '黑色'
}
  • 可以通过接口结合 implements 来限制 类 必须要有 某些属性 和 方法
interface IDog { 
   name: string bark: () => void
}
class Dog implements IDog {
  name: string = ''
  food: string = ''
  bark() { }
}

九.泛型:类型是 可变 的!

function fn1 (temp: string): string {
   return temp
}

function fn2 (temp: number): number {
  return temp
}

function fn3 (temp: boolean): boolean { 
  return temp
}
//改写
function 函数名<Type>(temp:Type):Type{ 
   return temp
}

fn<string>('123')
fn<number>(1)
  • 泛型约束
interface ILength {
   length: number
}
// 传入的类型必须要有 接口中的属性
function fn<T extends ILength>(param: T) { 
   console.log('', param.length)
}
  • 多个泛型参数

function funcA<T, T2>(param1: T, param2: T2) { 
  console.log('参数 1', param1)
  console.log('参数 2', param2)
}

funcA<string, number>('大白菜', 998)
funcA<string[], boolean[]>(['小老虎'], [false])
  • 泛型接口
interface IdFunc<Type> { 
   id: (value: Type) => Type
   ids: () => Type[]
}
let obj: IdFunc<number> = { 
 id(value) { return value },
  ids() { return [1, 3, 5] }
}
  • 泛型类
// 定义
class Person <T> {
   id: T
   constructor(id: T) {
      this.id = id
   }
   getId(): T {
    return this.id
  }
}
// 使用
let p = new Person<number>(10)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,313评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,369评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,916评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,333评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,425评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,481评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,491评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,268评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,719评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,004评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,179评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,832评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,510评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,153评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,402评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,045评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,071评论 2 352

推荐阅读更多精彩内容