ArskTs的基础语法

91 阅读6分钟

1、输出语句

// console.log('消息说明', '打印的内容')
console.log('我说', 'Hello World')

注释:
1.单行注释 // 注释内容,快捷键: Ctrl +/
2.块注释 /* 注释内容*/,快捷键:Ctrl + Shift + /

2、三种常见的基础数据类型:

① string 字符串:描述信息
② number 数字:计算
③ boolean 布尔:判断 (真、假)

3、字符串

// 1. 变量存储
// 1.1 字符串 string 类型
// 注意点1:字符串需要用引号引起来(单引双引号)'字符串' "字符串"
// 注意点2:存储的时候,后面的存的内容,需要和前面的类型对应
let title: string = '巨无霸汉堡'
console.log('字符串title', title)
 
// 1.2 数字 number 类型
let age: number = 18
console.log('年纪age', age)
 
// 1.3 布尔 boolean 类型(true真,false假)
let isLogin: boolean = false
console.log('是否登录成功', isLogin)
 
// 2. 变量的修改
age = 40
console.log('年纪age', age)
 
// 常量
const PI: number = 3.14
const companyName: string = '华为'
console.log('公司名:', companyName)
console.log('PI:', PI)
 
// 字符串拼接 + 拼串
let name: string = '吕布'
let age: number = 18
console.log('简介信息:', '姓名' + name)
console.log('简介信息:', '年纪' + age)
 
// 注意点: + 两边只要有字符串, 就是拼串的作用 (如果两边都是数字, 就是计算求和的作用)
let num1: number = 100
let num2: number = 200
console.log('总数', num1 + num2)
 
 
---------------------------------------------
// 模板字符串 `` (支持变量, 更利于字符串拼接)    普通字符串 ''  ""
// let str: string = `hello world`
//
 let name: string = '成小龙'
 let age: number = 18
 let hobby: string = '打拳'
 console.log('简介信息', `姓名: ${name}, 年纪: ${age}岁, 爱好: ${hobby}`)

4、数组

// 学生数组
// 语法:
// let 数组名: 类型[] = [数据1, 数据2, 数据3, ... ]
 
// 1.数组中存储的每个数据,都有自己的编号,编号从0开始(索引)
let names: string[] = ['刘亦菲', '杨颖', '杨幂', '刘诗诗', '伍佰']
console.log('数组names', names)
 
// 2.利用有序的编号(索引) 取数组的数据
// 取数据:数组名[索引]
console.log('取到了', names[3])
 
// 3. 数组修改(通过下标)
names[2] = '赵云'
console.log('修改数组', names)
 
// 4.添加
// 1. 往开头新增 unshift(新增的值)  返回操作后的数组的长度
 songs.unshift('彩虹')
 console.log('返回数组长度', songs.unshift('七里香'))
console.log('数组songs', songs)
 
// 5. 往结尾新增 push(新增的值)  返回操作后的数组的长度
 songs.push('光辉岁月', '海阔天空')
console.log('数组', songs)
 
// 6.删除
// 1. 从开头删 shift
 console.log('返回删除的项', songs.shift())
 console.log('返回删除的项', songs.shift())
 console.log('数组', songs)
 
// 7. 从结尾删 pop
 songs.pop()
 songs.pop()
 songs.pop()
console.log('数组', songs)
 
// 开头(S): unshift(开头增)  shift(开头删)
// 结尾(P): push(结尾增)  pop(结尾删)
 
// 8.定义一个数组
let songs: string[] = ['告白气球', '洋葱', '吻别', '双节棍', '曹操']
// splice 在任意位置进行删除或新增内容
// 数组名.splice(操作的起始位置, 删除几个, 新增的项1, 新增的项2, ...)
 
//  8.1. 删除(任意位置)
// songs.splice(2, 2)
// console.log('数组songs', songs)
 
//  8.2. 新增(任意位置)
// songs.splice(1, 0, '彩虹') // 新增
 
//  8.3. 替换(删了一项, 又加了一项)
// songs.splice(1, 1, '彩虹')
// console.log('数组songs', songs)
 
-----------------------------剩余参数和展开运算符---------------------------
// ...数组名  => 可以收集剩余的参数
function sum (n1: number, n2: number, ...argsArr: number[]) {
  let total: number = n1 + n2
  // 遍历剩余参数, 如果有剩余的参数, 就继续累加
  for (let temp of argsArr) {
    total += temp
  }
  console.log('结果', total)
  return total
}
sum(1, 2)
sum(1, 2, 3, 4)
sum(1, 2, 3, 4, 5, 6)
 
// ... 展开运算符, 用于数组的平铺合并
let arr1: number[] = [1,2,3]
let arr2: number[] = [4,5,6]
let newArr: number[] = [...arr1, ...arr2]
console.log('最终的数组', newArr)

5、函数

// 1. 定义函数 (只是定义了函数,但是没有使用,不会执行内部的代码段)
function star() {
  console.log('五角星', '☆')
  console.log('五角星', '☆☆')
  console.log('五角星', '☆☆☆')
  console.log('五角星', '☆☆☆☆')
  console.log('五角星', '☆☆☆☆☆')
}
// 2. 调用函数(使用函数)
//    函数名()
star()
 
 
 
 
//3.带返回值对函数
function buy(price: number, num: number) {
  console.log('传入的数据', price, num)
  // 1. 处理数据
  let result: number = price * num
  // 2. 返回结果
  return result
}
 
 
//4.函数调用
let apple: number = buy(2, 3)
console.log('苹果', apple)
 
let banana: number = buy(4, 4)
console.log('香蕉', banana)
// 注意点:形参和实参的数量要统一,一一对应

6、箭头函数

//1.构建函数
let buy = (price: number, weight: number) => {
  // 1. 计算数据
  let result: number = price * weight
  // 2. 返回计算的结果
  return result
}
//2.调用函数
let apple: number = buy(2, 3)
console.log('苹果', apple)

7、定义接口-对象

// 1. 定义接口
interface Person {
  name: string
  age: number
  weight: number
}
 
// 2. 基于接口,定义对象
let ym: Person = {
  name: '大幂幂',
  age: 18,
  weight: 90
}
 
// 3. 获取对象属性值  对象名.属性名
console.log('体重:', ym.weight)

8、对象-方法的使用

// 1. 定义接口
interface Person {
  name: string
  age: number
  weight: number
 
  // ① 定义方法的类型
  sing: (song: string) => void
  dance: () => void
}
 
// 2. 基于接口,定义对象
let ym: Person = {
  name: '大幂幂',
  age: 18,
  weight: 90,
 
  // ② 定义方法
  sing: (song: string) => {
    console.log('杨幂说', '我来唱首歌', song)
  },
  dance: () => {
    console.log('杨幂说', '我来跳个舞')
  }
}
 
// ③ 调用对象里面的方法 (重要!!)
ym.sing('爱的供养')
ym.dance()

9、联合类型

// 联合类型还可以将变量值,约定在一组数据范围内进行选择
// 性别:男 女 保密
let gender: 'man' | 'woman' | 'secret' = 'secret'
//使用
gender = 'man'

10、枚举

// 1. 定义枚举 (定义常量列表)
enum ThemeColor {
  Red = '#ff0f29',
  Orange = '#ff7100',
  Green = '#30b30e'
}
 
// 2. 给变量设定枚举类型
let color: ThemeColor = ThemeColor.Orange
console.log('color', color)

11、Union类型

union类型,即联合类型,是由多个类型组合成的引用类型。联合类型包含了变量可能的所有类型。

class Cat {
  name: string = 'cat';
  // ...
}
class Dog {
  name: string = 'dog';
  // ...
}
class Frog {
  name: string = 'frog';
  // ...
}
type Animal = Cat | Dog | Frog | number;
// Cat、Dog、Frog是一些类型(类或接口)

let animal: Animal = new Cat();
animal = new Frog();
animal = 42;
// 可以将类型为联合类型的变量赋值为任何组成类型的有效值

12、For语句

for语句会被重复执行,直到循环退出语句值为false。

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

13、For-of语句

使用for-of语句可遍历数组或字符串。示例如下:

for (forVar of expression) {
  statements
}

示例:

for (let ch of 'a string object') {
  /* process ch */
}

14、空值合并运算符

空值合并二元运算符??用于检查左侧表达式的求值是否等于null或者undefined。如果是,则表达式的结果为右侧表达式;否则,结果为左侧表达式。

换句话说,a ?? b等价于三元运算符(a != null && a != undefined) ? a : b。

在以下示例中,getNick方法如果设置了昵称,则返回昵称;否则,返回空字符串:

class Person {
  // ...
  nick: string | null = null;
  getNick(): string {
    return this.nick ?? '';
  }
}

15、点击事件

Button('点我,显示对话框')
   .onClick(() => {
      // console.log('消息:', '你好点击事件')
      // 弹个框
      AlertDialog.show({
         message: '你好~ 这是个弹框'
      })
  })

16、字符串转数字

let str1: string = '1.1'
let str2: string = '1.9'
let str3: string = '1.99a'
let str4: string = 'a'
 
// 转数字类型
// 1. Number(变量) 原样转数字
console.log('Number', Number(str1)) // 1.1
console.log('Number', Number(str2)) // 1.9
console.log('Number', Number(str3)) // NaN
console.log('Number', Number(str4)) // NaN
 
// 2. parseInt(变量) 去掉小数部分(取整)
console.log('parseInt', parseInt(str1)) // 1
console.log('parseInt', parseInt(str2)) // 1
console.log('parseInt', parseInt(str3)) // 1
console.log('parseInt', parseInt(str4)) // NaN
 
// 3. parseFloat(变量) 保留小数部分
console.log('parseFloat', parseFloat(str1)) // 1.1
console.log('parseFloat', parseFloat(str2)) // 1.9
console.log('parseFloat', parseFloat(str3)) // 1.99
console.log('parseFloat', parseFloat(str4)) // NaN

17、数字转字符串

// 数字通常用于计算, 字符串通常用于展示
let money: number = 10000
// 将数字转字符串, toString()  toFixed()
// 1. 数据.toString() 原样转字符串
console.log('toString:', money.toString())

// 2. 数据.toFixed(保留几位小数)  四舍五入
console.log('toFixed:', money.toFixed())
console.log('toFixed:', money.toFixed(2))

18、switch

let fruit = "香蕉"
switch (fruit) {
  case '苹果':
    console.log('苹果价格:', '2.8元一斤')
    break
  case '香蕉':
    console.log('香蕉价格:', '5.5元一斤')
    break
  case '西瓜':
    console.log('西瓜价格:', '1.5元一斤')
    break
  default:
    console.log('提示:', '尊敬的用户, 该水果不存在')
}

19、三元条件表达式

// 语法: 条件 ? 条件成立执行的表达式 : 条件不成立执行的表达式
let num1: number = 40
let num2: number = 30

let max: number = num1 > num2 ? num1 : num2
console.log('三元条件表达式', max)