準備工作
去鴻蒙官網下載開發環境
點擊右側預瀏覽,刷新和插銷按鈕,插銷表示熱更新,常用按鈕。
基礎語法
string number boolean const常量 數組
let s : string = "1111";
console.log("string", s);let n : number = 1;
console.log("number", n);let bool : boolean = true;const PI= "asdfasdf";
console.log(PI);let numbers = [1, 2, 3, 4, 5, 6];
console.log("arr", numbers);
接口
實現接口時,必須實現所有的屬性和方法
interface HI{a : string;b : number;c : boolean;sing : (song:string) => void;dance : ()=>void;
}let person: HI = {a : "123",b : 1,c : true,sing : (song:string)=>{console.log("唱首歌", song);},dance : ()=>{}
}
console.log("1", person.a, person.b, person.c);
person.sing("愛的供養");
function fun(){}
聯合類型
// 1
let judge : number | string = 100;
judge = "A";// 2
let gender : 'man' | 'woman' = 'man';
枚舉類型
enum ThemeColor {Red = '#ff0f29',Orange = '#ff7110',Green = '#30b30e'
}
let color : ThemeColor = ThemeColor.Red;
字符串拼接
字符串+數字
數字+字符串
字符串+?字符串
只要一邊是字符串就是拼接。
模板字符串
``里面可以使用變量,方便多個字符串的拼接。
數字和字符串轉換
需要注意的是:
????????parseInt('1.1a') 直接取整,忽略0.1a
? ? ? ? parseFloat('1.1a') 1.1
????????parseFloat('1.a1') 1
? ? ? ? 也就是說,parseFloat在遇到非數字時就會截斷。
點擊事件
.onClick(),參數為一個回調函數
Button('按鈕').onClick(()=>{AlertDialog.show({message : '彈窗'})
})
狀態管理
注意:struct里的變量必須用this訪問且不能使用let定義。
小技巧:點擊預覽器上面的T標志,可以使用鼠標定位元素對應的代碼。
數組操作
添加:
????????arr.unshift(); //從開頭增加,返回操作后數組長度
????????arr.push(); //從結尾增加,返回操作后數組長度
刪除:
????????arr.shift(); //從開頭刪除,返回刪除的項
????????arr.poll(); //從結尾刪除,返回刪除的項
在指定位置增加/刪除n個元素:
????????arr.splce(起始位置, 刪除個數, 新增元素1, 新增元素2, ...);
if語句
小括號結果不是布爾類型時,會類型轉換為布爾值
if(0、空串、null和undefine)這幾種均視為false
其他非空值(如對象)均視為true,如空數組和空對象:if( [] )、if( {} )
for...of
對象數組
不能直接使用對象輸出,要使用JSON.stringify(對象);
interface Person {name : string,age : number
}
let arr : Person[] = [{name:"111",age: 1},{name:"222", age: 2}
]
console.log("", arr[1]); //[object Object]
for (let item of arr){console.log(JSON.stringify(item));
}
ForEach—— 渲染控制
注意使用ForEach時,item需要指定類型,index指不定都行,建議寫上。
class?
類是用于 創建對象 模板。同時類聲明也會引入一個 新類型,可定義其 實例屬性、方法 和 構造函數。
一般定義更加復雜的類型時就不適用接口了而使用Class。
1、實例屬性:在定義class時必須賦初值,或者使用可選鏈操作符 ?. 來定義屬性
2、不同實例,將來需要有不同的字段初始值,就需要通過構造函數實現
構造函數使用關鍵字:constructor 來定義,在new對象時調用。如果參數多可是傳一個對象,這樣可以自由順序賦值。
3、方法:方法的返回值可以寫在函數名之后,用冒號隔開,即:這個函數的類型時返回值類型的。
4、靜態屬性、方法:一般用作工具屬性方法,用類名直接調用。
interface IFood {name : string,price : number,desc : string
}class Food {// 1、屬性name : stringprice : numberdesc : stringa ?: number// 2、構造constructor(mesObj:IFood) {this.name = mesObj.namethis.price = mesObj.pricethis.desc = mesObj.desc}// 3、方法sayHi(name:string):void{console.log(this.name, name);}// 4、靜態屬性、方法static num:numberstatic func(){}
}
5、繼承extend和super關鍵字
類可以通過 繼承 快速獲取另外一個類的 字段 和 方法。只支持單一繼承。
子類通過 super 可以訪問父類的實例字段、實例方法和構造函數。
super.屬性
super.方法
super(1, 2)? //調用父類構造
6、instanceof 類型檢測
實例對象?instanceof 類型
typeof 表達式 : 只能檢測簡單類型,對象類型結果均為Object。
7、修飾符