鸿蒙应用开发-ArkTs基础语句

484 阅读2分钟

1.数据类型

数据类型有:

字符串:string,数字:number,布尔:boolean,联合类型:类型1 | 类型2 | ....,

枚举类型:enum 枚举名{名称 = 值}, 数组:类型[] ,函数:function(箭头函数)

对象:interface 类型 { 属性名称:属性类型 }

2.变量,常量 ,状态变量的定义

let 变量:类型 = 初始值

const 常量:类型 = 初始值

@State 变量:类型 = 初始值(状态变量)

3.函数的定义

1.普通函数

function 函数名(形参:形参类型,....) {
  // 方法体
 // return 0  // 返回number类型的数据
 // return '0'  // 返回字符串类型的数据

  // 如果一个函数没有显示调用return 默认返回的是undefined
}

2.箭头函数

let 函数名 = (形参:形参类型,....) => {

   // 方法体
 // return 0  // 返回number类型的数据
 // return '0'  // 返回字符串类型的数据

  // 如果一个函数没有显示调用return 默认返回的是undefined
}
  // 给事件传入函数的时候,通常我们使用的是一个不带有名字的箭头函数(匿名函数)
  // 给事件传入的函数我们也称之为回调函数
.onClick(()=>{}) // ()=>{} 箭头函数

//调用:函数名(实参,...)

4.数组的定义

let 数组变量: number[] = [1,2]
let 数组变量: number[][] = [[1,2],[3,4]]

5.对象的定义

interface iDog{
  dogName:string,
  age:number  
}
interface iPerson {
   name:string,
   dog:iDog
}

let obj:iPerson = { name:'明明',dog:{dogName:'金毛',age:1} }

6.数据的处理

1.字符串拼接 +

let name: string = '小明'
console.log('学生信息:', '名字是' + name)

2.模板字符串 `字符串${ 变量 }` (反引号)

let name: string = '小明'
let age:number = 18

// 我的名字是小名,今年18岁了
console.log(`我的名字是${name},今年${age}岁了`)

3.字符串转数字

  • Number():将字符串类型数据转换为数字型,转换失败返回NaN(字符串中包含非数字)
let str1: string = '1.1'
let str2: string = '1.9'
let str3: string = '1.1a'

console.log('数字是', Number(str1))  // 1.1
console.log('数字是', Number(str2))  // 1.9
console.log('数字是', Number(str3))  // NaN
  • parseInt()去掉小数部分将字符串类型转为数字型,转换失败返回NaN
console.log('数字是', parseInt(str1))  // 1
console.log('数字是', parseInt(str2))  // 1
console.log('数字是', parseInt(str3))  // 1
  • parseFloat():保留小数部分将字符串类型转为数字型,转换失败返回NaN
console.log('数字是', parseFloat(str1))  // 1.1
console.log('数字是', parseFloat(str2))  // 1.9
console.log('数字是', parseFloat(str3))  // 1.1

4.数字转字符串

  • toString()
let num1: number = 1.1
let num2: number = 1.9

console.log('字符串是', num1.toString())//1.1
console.log('字符串是', num2.toString())//1.9
  • toFixed():四舍五入转字符串
console.log('字符串是', num1.toFixed())  // 1
console.log('字符串是', num2.toFixed())  // 2

7.表达式 :可以通过计算获得一个结果的小段代码。 如:1+1

语句:console.log('hello') 、if、for、while

8.分支结构

1.if分支

  • 单分支 if() {}
  • 双分支 if() {} else() {}
  • 多分支 if() {} else if() {} else() {}

2.Switch 分支

switch (表达式) {
  case1:
    与值1匹配执行的语句
    break
  case2:
    与值2匹配执行的语句
    break
  default:
    以上都未成功匹配执行的代码
}

let fruit: string = '橘子'

switch (fruit) {
  case '苹果':
    console.log('苹果5元/斤')
    break
  case '橘子':
    console.log('橘子3元/斤')
    break
  default:
    console.log('不好意思,您查询的水果已售罄')
}

3.条件表达式(三元运算 / 三元表达式)

语法: 条件 ? 条件成立执行的表达式 : 条件不成立执行的表达式

9.循环

Tips:循环三要素:

  • 初始值(变量)
  • 循环条件
  • 变化量(变量计数,自增或自减)

1.While 语句

while (条件) {
  条件成立重复执行的代码
}

let i: number = 1
while (i < 5) {
  console.log('while~i', '重复执行的代码')
  i++
}

2.for

for (初始值; 条件; 变化量) {
  重复执行的代码
}

let sum:number = 0

for (let i = 1; i<= 10; i++) {
  sum += i
}

console.log('累加和是', sum)//55
  • 退出循环

break:终止循环

continue: 退出当前一次循环的执行,继续执行下一次循环

for (let i = 1; i <= 5; i++) {
  if (i == 3) {
    console.log('吃饱了,不吃了')
    // 终止循环
    break
  }
  console.log(`正在吃第${i}个苹果`)//3
}

for (let i = 1; i <= 5; i++) {
  if (i == 3) {
    console.log('遇到虫子,跳过这个,继续吃下一个')
    continue
  }
  console.log(`正在吃第${i}个苹果`)//1,2,4,5
}

遍历数组for...of

  • 语法: for (let item of 数组名) {}
let names: string[] = ['小红', '小明', '大强']
// for   for...of  比较
for(let i = 0; i < names.length; i++) {  
  console.log('名字是', names[i])
}

for (const item of names) {
  console.log('for...of...名字是', item)
}

渲染控制 - ForEach

循环数组数据重复生成一段相同的页面结构,渲染在界面上

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

@Entry
@Component
struct Index {
  // 1. 定义数组
  @State titles: string[] =  ['电子产品', '精品服饰', '母婴产品', '影音娱乐', '海外旅游']

  build() {
    // 提示:✨✨ForEach可以写在build函数里面,{}里面的组件是用来循环生成的
    Column() {
      // 2. ForEach遍历数组,循环生成Text组件(此处数组数据有几个生成几次Text)
      // item:是形参,名字可以自己编写,类型是数组的数据类型,可以省略
      // index:表示数据在数组中的索引号,是一个number类型,可以省略
      ForEach(this.titles, (item: string, index: number) => {
        // 3. 在具体的一个组件身上可以使用item这个数据
        Text(item + ' =' + index)
          .fontSize(24)
          .fontWeight(700)
          .fontColor(Color.Orange)
          .width('100%')
          .padding(15)
      })
    }
  }
}

foreach.png