一.常用類型轉換
1.字符串轉數(shù)字
- Number():字符串 直接轉數(shù)字,轉換失敗返回NaN(字符串中包含非數(shù)字)
- parseInt():去掉小數(shù)部分 轉數(shù)字,轉換失敗返回NaN
- parseFloat():保留小數(shù)部分 轉數(shù)字,轉換失敗返回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.字符串轉數(shù)字
- toString():數(shù)字直接轉字符串
- toFixed():四舍五入轉字符串,可設置保留幾位小數(shù)
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( (參數(shù)) => {} )
Text("點擊事件")
.padding(40)
.backgroundColor(Color.Gray).onClick(() => {
AlertDialog.show({ message: "這是一個彈窗" })
})
三.狀態(tài)管理
1. 狀態(tài)管理的基本流程圖

image.png
2. 普通變量 和 狀態(tài)變量 的區(qū)別?
- 普通變量:只能在初始化時渲染,后續(xù)將不會再刷新。
- 狀態(tài)變量:需要裝飾器裝飾,改變會引起 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.算數(shù)運算符 和 賦值運算符

image.png
2.一元運算符
常見一元運算符:++ 和 --
- 后置寫法:先賦值后自增/自減
- 前置寫法:先自增/自減再賦值
let number3:number=10
let number4:number=10
console.log("number10",number3++)//10
console.log("number11",++number4)//11
3.運算符優(yōu)先級

image.png
四.數(shù)組
- 查找: 數(shù)組名[下標]、數(shù)組名.length
- 修改: 數(shù)組名[下標] = 新值
- 開頭增加: : 數(shù)組名.unshift(數(shù)據(jù)1, 數(shù)據(jù)2, ...)
- 結尾增加 : 數(shù)組名.push(數(shù)據(jù)1, 數(shù)據(jù)2, ...)
- 從開頭刪: 數(shù)組名.shift()
- 從結尾刪:數(shù)組名.pop()
- 任意位置增加或刪除: 數(shù)組名.splice(操作的起始位置, 刪除的個數(shù), 新增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("循環(huán)個數(shù)"+numberText)
.padding(10)
.backgroundColor(Color.Gray).onClick(() => {
this.message[0]++
})
})
六.Class類
1.修飾符:修飾符包括:readonly、private、protected 和 public。省略不寫默認為 public
- readonly:只讀,都可以訪問
- private:私有,類內(nèi)部可以訪問
- protected:保護,類及子類可以訪問
- public:公共,都可以訪問
2.Class 類 – instanceof
instanceof 運算符可以用來檢測某個對象是否是某個類的實例
用法:實例對象 instanceof Class
七.剩余參數(shù) 和 展開運算符
剩余參數(shù) 和 展開運算符 ...
剩余參數(shù)的語法,我們可以將 函數(shù) 或 方法 中一個不定數(shù)量的參數(shù)表示為一個數(shù)組
// 剩余參數(shù)只能寫在最后一位
function 函數(shù)名(參數(shù)1,參數(shù)2,...剩余參數(shù)數(shù)組){
// 邏輯代碼
// 之前的參數(shù):挨個獲取即可 // 剩余參數(shù):以數(shù)組的形式獲取
}
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
出于程序穩(wěn)定性,以及運行性能考慮,在 ArkTS 中 ...(展開運算符) 只能用在數(shù)組上
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 函數(shù)名<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)
}
- 多個泛型參數(shù)
function funcA<T, T2>(param1: T, param2: T2) {
console.log('參數(shù) 1', param1)
console.log('參數(shù) 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)