株洲網(wǎng)站設(shè)計公司百度競價排名是什么意思
1、ArkTS介紹
ArkTS是HarmonyOS主力應(yīng)用開發(fā)語言,它在TS基礎(chǔ)上,匹配ArkUI框架,擴(kuò)展了聲明式UI、狀態(tài)管理等響應(yīng)的能力,讓開發(fā)者以更簡潔、更自然的方式開發(fā)跨端應(yīng)用。
JS 是一種屬于網(wǎng)絡(luò)的高級腳本語言,已經(jīng)被廣泛用于web應(yīng)用開發(fā),常用來為網(wǎng)頁天津各式各樣的動態(tài)功能,為用戶提供更流暢美觀的瀏覽效果。
TS是JS的一個超集,它擴(kuò)展了JS的語法,通過在JS的基礎(chǔ)上添加靜態(tài)類型定義構(gòu)建而成,是一個開源的編程語言。
ArkTS基于TS語言,拓展了聲明式UI、狀態(tài)管理、并發(fā)任務(wù)等能力。
因此:在研究ArkTS之前,需要具備JS和TS的基礎(chǔ)知識,才會更加快速的掌握ArkTS,進(jìn)行鴻蒙應(yīng)用的開發(fā)。
2、TS基礎(chǔ)語法:基礎(chǔ)類型
2.1、布爾類型
TS中可以使用boolean來表示這個變量是布爾值,可以賦值為true或者false
let b:boolean = false;
2.2、數(shù)字類型
TS中所有的數(shù)字都是浮點數(shù),可以使用number表示,除了十進(jìn)制,還有支持二進(jìn)制、八進(jìn)制、十六進(jìn)制。
let a:number = 2023;
let b:number = 0b11001100;
let c:number = 0o3757;
let d:number = 0xae98;
2.3、字符串類型
TS中使用string表示文本數(shù)據(jù)類型,可以使用雙引號或單引號表示字符串。
let name:string = "qubo";
name = "qu";
name = "bo";
2.4、數(shù)組類型
TS支持兩種方式聲明數(shù)組:
第一種:可以在元素類型后面接著書寫[ ] ,表示由此類型元素組成的一個數(shù)組;
第二種:使用數(shù)組泛型,Array<元素類型>
let ages:[] = [17,18,19,20];
let names:Arrya<string> = ["張無忌","趙敏","周芷若","小昭"];
2.5、元組類型
元組類型允許表示一個已知元素數(shù)量和類型的數(shù)組,各個元素類型不一定相同。
let x:[string,number];
x = ["張無忌",20]; // 沒有問題
x = [18,'趙敏']; // 編譯時報錯
2.6、枚舉類型
enum類型是對JS標(biāo)準(zhǔn)數(shù)據(jù)類型的一個補(bǔ)充,使用枚舉類型可以為一組數(shù)值賦予友好的名字。
enum Color {Red,Green,Blue};
let c:Color = Color.Blue;
2.7、unknown類型
有時候,我們會想要為那些在編程階段還不確定類型的變量指定一個類型,那么可以使用unknown類型進(jìn)行標(biāo)記。
let s:unknown = 123;
s = "abc";
s = true;
// 以上操作都是正確的
2.8、void類型
當(dāng)一個函數(shù)沒有返回值時,通過會使用void作為返回值類型進(jìn)行標(biāo)記。
function demo():void{consoloe.log("void 表示函數(shù)不返回任何數(shù)據(jù)");
}
2.9、null和undefined類型
TS中,undefined和null兩者各自有自己的類型分別是undefined和null。
let a:undefined = undefined;
let b:null = null;
2.10、聯(lián)合類型
聯(lián)合類型表示取值可以為多種類型中的一種。
let a:string|number;
a = "陜西";
a = 610;
3、條件語句
條件語句用于基于不同的條件來執(zhí)行不同的動作,ts條件語句通過一條或者多條語句的執(zhí)行結(jié)果(true或false)來決定執(zhí)行的代碼塊。
3.1、if語句
let num:number = 10;
if(num > 0){console.log("正數(shù)");
}
3.2、if else語句
let num:number = 10;
if(num % 2 == 0){console.log("偶數(shù)");
}else{console.log("奇數(shù)");
}
3.3、if-else if else語句
let num:number = 10;
if(num > 0){console.log("正數(shù)");
}else if(num < 0){console.log("負(fù)數(shù)");
}else{console.log("零");
}
3.4、switch語句
一個switch語句用于一個變量可能等于多個值時,通過不同的case值,進(jìn)行每個可能值的檢測,并執(zhí)行對應(yīng)的代碼。
let score:number = 90;
switch(parseInt(score / 10)){case 10:case 9:console.log("優(yōu)");break;case 8:console.log("良");break;case 7:console.log("中");break;case 6:console.log("差");break;default:console.log("不及格");break;
}
4、函數(shù)定義
函數(shù)是一組一起執(zhí)行的任務(wù)語句,函數(shù)聲明要告訴編譯器函數(shù)的名稱、返回值類型和參數(shù)。TS創(chuàng)建函數(shù)有兩種情況:有名稱函數(shù)和匿名函數(shù)
4.1、有名稱函數(shù)
// 有名稱函數(shù):給列表設(shè)置為number類型
function add(a:number , b:number):number{return a + b;
}
4.2、匿名函數(shù)
// 匿名函數(shù):給列表設(shè)置為number類型
let add = function(a:number , b:number):number{return a + b;
}
4.3、可選參數(shù)
在TS中可以在參數(shù)旁邊使用?實現(xiàn)可選參數(shù)。
// lastName:可選參數(shù),調(diào)用時可以傳遞,也可以不傳遞
function buildName(firstName:string,lastName?:string):string{if(lastName){return firstName + "-" + lastName;}else{return firstName;}
}
console.log( buildName("趙","四") );
console.log( buildName("趙") );
4.4、剩余參數(shù)
剩余參數(shù)會被當(dāng)作個數(shù)不限的可選參數(shù)。調(diào)用時可以傳遞數(shù)據(jù),也可以不傳遞,還可以傳遞很多個數(shù)據(jù)。使用省略號進(jìn)行定義
function add(a:number,b:number,...rest:number[]):number{let sum = a + b;if(rest){for(let i = 0 ; i < rest.length; i++){sum+=rest[i];}}return sum;
}
console.log( add(1,2,3,4,5,6,7) );
console.log( add(1,2,3) );
console.log( add(1,2) );
4.5、箭頭函數(shù)
ES6版本提供建通函數(shù),它是定義匿名函數(shù)的簡寫形式,用于函數(shù)表達(dá)式,它省略function關(guān)鍵字。
([param1,param2,...,param n])=>{// 代碼塊
}
其中括號內(nèi)是函數(shù)的入?yún)?#xff0c;可以有0到多個參數(shù),箭頭后是函數(shù)體的代碼塊。也可以將這個箭頭函數(shù)賦值給一個變量
let func = ([param1,param2,...,param n])=>{// 代碼塊
}
5、類
5.1、定義類
TS支持基于類的面向?qū)ο蟮木幊谭绞?#xff0c;定義類的關(guān)鍵字為 class,后面緊跟類名。類描述了所創(chuàng)建的對象共同的屬性和方法。
// 定義類
class Person{private name:string;private age:number;constructor(name:string,age:number){this.name = name;this.age = age;}public getPersonInfo():string{return `name=${this.name},age=${this.age}`;}
}
// 創(chuàng)建類的對象
let p1 = new Person("滅絕師太",100);
p1.getPersonInfo();
可以使用private、public、static、protected等修飾符對類中的成員進(jìn)行修飾。用于參考TS類的官方文檔。
5.2、繼承
繼承是子類繼承父類的特征和行為,使得子類具有父類相同的行為,TS中允許使用繼承擴(kuò)展現(xiàn)有的類,對應(yīng)的關(guān)鍵字extends。
// 定義類
class Emp extends Person{private dept:string;constructor(name:string,age:number,dept:string){super(name,age);this.dept = dept;}public getEmpInfo():string{return this.getPersonInfo()+`,dept=${this.dept}`;}
}
// 創(chuàng)建類的對象
let e1= new Emp ("金毛獅王",20,"保安部");
e1.getEmpInfo();
針對類,除了繼承,還有抽象類,與接口的概念。后續(xù)課程中用到了還會繼續(xù)介紹。
6、模塊
隨著應(yīng)用越來越大,通常要將代碼拆分成多個文件,即所謂的模塊 (module) 。模塊可以相互加載并可以使用特殊的指令 export 和 import 來交換功能,從另一個模塊調(diào)用一個模塊的函數(shù)。
兩個模塊之間的關(guān)系是通過在文件級別上使用 import 和 export 建立的。模塊里面的變量、函數(shù)和類等在模塊外部是不可見的,除非明確地使用 export 導(dǎo)出它們。類似地,我們必須通過 import 導(dǎo)入其他模塊導(dǎo)出的變量、函數(shù)、類等
// 導(dǎo)出這個類
export class NewsData{title:string;content:string;constructor(title:string,content:string){this.title = title;this.content = content;}
}
// 導(dǎo)入已經(jīng)存在的類
import {NewsData} from '../pojo/NewsData';
7、迭代器
當(dāng)一個對象實現(xiàn)了Symbol.iterator屬性時,我們認(rèn)為它是可迭代的。一些內(nèi)置的類型如Array,Map,Set,String,Int32Array,Uint32Array等都具有可迭代性。
// for of語句
let arr = [11,22,33,44];
for(let x of arr){console.log(x);
}
// for in 語句
let items = ["aaa","bbb","ccc","ddd"];
for(let i in items){console.log(i); // 這里的i是數(shù)組的下標(biāo),并不是數(shù)組中的元素
}
//
for(let i of items){console.log(i); // 這里的i是數(shù)組中的元素
}