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 (表达式) {
case 值1:
与值1匹配执行的语句
break
case 值2:
与值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)
})
}
}
}