版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
ArkTS編程基礎(chǔ)匯報(bào)人:Kimi時(shí)間:2025.01.01目錄/CONTENTS01ArkTS概述02ArkTS數(shù)據(jù)類型03ArkTS聲明與運(yùn)算符04ArkTS語句05ArkTS函數(shù)06ArkTS類目錄CONTENTSArkTS接口01ArkTS空安全02ArkTS模塊03ArkTS泛型04本章小結(jié)05ArkTS概述01ArkTS簡(jiǎn)介ArkTS定義ArkTS是HarmonyOS應(yīng)用主要開發(fā)語言,基于TypeScript擴(kuò)展,引入靜態(tài)類型,擴(kuò)展了聲明式UI、狀態(tài)管理等能力,讓開發(fā)者可以以更簡(jiǎn)潔、更自然的方式開發(fā)高性能應(yīng)用。01ArkTS優(yōu)勢(shì)ArkTS在保持TypeScript基本語法風(fēng)格的基礎(chǔ)上,對(duì)TS的動(dòng)態(tài)類型特性施加更嚴(yán)格的約束,未來會(huì)結(jié)合應(yīng)用開發(fā)/運(yùn)行的需求持續(xù)演進(jìn),逐步提供并行和并發(fā)能力增強(qiáng)、系統(tǒng)類型增強(qiáng)、分布式開發(fā)范式等更多特性。02應(yīng)用場(chǎng)景主要用于開發(fā)HarmonyOS應(yīng)用,支持多種設(shè)備類型,如手機(jī)、平板、智能穿戴設(shè)備等,能夠?qū)崿F(xiàn)跨設(shè)備的無縫交互和協(xié)同工作,為用戶提供一致的用戶體驗(yàn)。03ArkTS數(shù)據(jù)類型02基本數(shù)據(jù)類型數(shù)值類型ArkTS的數(shù)值類型為number,所有數(shù)字都是浮點(diǎn)數(shù),支持十進(jìn)制、二進(jìn)制、八進(jìn)制、十六進(jìn)制。例如:letage:number=30;letnum1:number=0b101010。字符串類型字符串類型string,使用雙引號(hào)或單引號(hào)括起來,還可以使用反向單引號(hào)括起來嵌入表達(dá)式或變量。例如:letname:string='fashion';lets3=`mynameis${name}`。布爾類型布爾類型boolean由true和false兩個(gè)邏輯值組成,用于表示條件判斷的結(jié)果,常用于控制程序的流程。復(fù)合數(shù)據(jù)類型數(shù)組類型數(shù)組是一個(gè)容器,可以存儲(chǔ)多個(gè)相同類型的數(shù)據(jù)。例如:letstudents:string[]=['李小紅','張小明','王小強(qiáng)'];letscores:number[]=[87,90,85]。枚舉類型枚舉類型enum是對(duì)JavaScript標(biāo)準(zhǔn)數(shù)據(jù)類型的一個(gè)補(bǔ)充,使用枚舉類型可以為一組數(shù)值賦予友好的名字。例如:enumColor{Red,Green,Blue,Black,Yellow}。元組類型元組類型允許表示一個(gè)已知元素和類型的數(shù)組,各個(gè)元組類型不必相同。例如:letstudent:[string,number];student=['Fashion',180]。復(fù)合數(shù)據(jù)類型聯(lián)合類型聯(lián)合類型表示取值可以為多種類型中的一種。例如:lettest:string|number|boolean;test=true;test='Fashion';test=180。null和voidnull是一個(gè)表示空值的對(duì)象,void當(dāng)一個(gè)函數(shù)沒有返回值時(shí),你通常會(huì)見到其返回值類型是void。ArkTS聲明與運(yùn)算符03聲明常量聲明以關(guān)鍵字const聲明的常量,一般用來存儲(chǔ)程序中不變的數(shù)據(jù),常量只能賦值一次。例如:constYourName:string='Fashion';constPI:number=3.14。變量聲明以關(guān)鍵字let開頭的聲明引入變量,該變量在程序執(zhí)行期間可以具有不同的值。例如:letname:string='fashion';letage:number=30。運(yùn)算符邏輯運(yùn)算符常見的邏輯運(yùn)算符有&&、||、!等。例如:if(score>=90){console.log('優(yōu)秀')}elseif(score>=70){console.log('良好')}。賦值運(yùn)算符賦值運(yùn)算符=,復(fù)合賦值運(yùn)算符有+=、-=、*=、/=、%=等。例如:letnum=10;num+=20。比較運(yùn)算符常見的比較運(yùn)算符有=、!=、>、>=、<、<=等。例如:if(a3>10){console.log('a3>10')}。位運(yùn)算符常見的位運(yùn)算符有&、|、^、~、<<、>>、>>>等。例如:leta1=5;leta2=3;console.log((a1&a2).toString())。ArkTS語句04輸出語句console.log寫法:console.log(‘消息說明’,‘打印的內(nèi)容’),注意括號(hào)中的參數(shù)是string類型,如果是數(shù)值類型可以使用.toString()方法轉(zhuǎn)換再輸出。注釋單行注釋單行注釋使用雙斜線(//)標(biāo)記,后面跟隨注釋內(nèi)容,快捷鍵ctrl+/。多行注釋多行注釋使用/**/標(biāo)記,適用于需要注釋多行的場(chǎng)景,快捷鍵ctrl+shift+/。分支結(jié)構(gòu)單分支ifif(條件){條件成立執(zhí)行的代碼},小括號(hào)條件結(jié)果為true,則執(zhí)行大括號(hào)里面的代碼。雙分支if-elseif(條件){條件成立執(zhí)行的代碼}else{條件不成立執(zhí)行的代碼},小括號(hào)條件結(jié)果為true,則執(zhí)行else前面大括號(hào)里面的代碼,否則執(zhí)行else后面大括號(hào)里面的代碼。多分支if-elseif-elseif(條件){條件成立執(zhí)行的代碼}elseif(條件){條件不成立執(zhí)行的代碼}else{條件不成立執(zhí)行的代碼},當(dāng)有多個(gè)條件需要判斷時(shí),使用if語句會(huì)比較麻煩,使用switch語句會(huì)更加清晰。分支結(jié)構(gòu)條件表達(dá)式條件表達(dá)式又叫三元運(yùn)算或三元表達(dá)式,描述形式為:條件?表達(dá)式1:表達(dá)式2。例如:letmax:number=num1>num2?num1:num2。switch分支switch語句允許將變量的值與多種情況進(jìn)行匹配,每種情況對(duì)應(yīng)一段要執(zhí)行的代碼。例如:switch(Math.floor((score/10))){case9:console.log('優(yōu)秀');break;case8:console.log('良好');break;default:console.log('不及格');}。循環(huán)語句for-of語句for-of語句專門用于遍歷可迭代對(duì)象的元素,例如數(shù)組、字符串、map集合等。例如:for(constitemofnames){console.log('第'+i.toString()+'個(gè)的名字是',item)}。for語句for語句的執(zhí)行流程:先執(zhí)行init表達(dá)式,再計(jì)算condition,如果為真則執(zhí)行循環(huán)主體的語句,再執(zhí)行update表達(dá)式,回到步驟2。例如:for(i;i<=100;i++){sum=sum+i}。while語句while語句只要條件值為真,就會(huì)執(zhí)行大括號(hào)中的語句,先判斷,再執(zhí)行。例如:while(i<=100){sum=sum+i;i++}。do-while語句do-while語句先執(zhí)行一次條件成立重復(fù)執(zhí)行的語句,再進(jìn)行條件的判斷,如果條件值為真,那么條件成立重復(fù)執(zhí)行的語句會(huì)重復(fù)執(zhí)行。例如:do{sum=sum+i;i++}while(i<=100)。ArkTS函數(shù)05函數(shù)定義與基本運(yùn)用函數(shù)定義函數(shù)必須先定義后調(diào)用,其語法格式為:function函數(shù)名():類型{函數(shù)體}。例如:functionadd():number{letx:number=3;lety:number=5;letz:number=x+y;returnz;}。參數(shù)傳遞為了提高函數(shù)的靈活性和通用性,可以定義函數(shù)時(shí)帶參數(shù)(形參),調(diào)用的時(shí)候,直接將參數(shù)(實(shí)參)寫入就可以了。例如:functionadd(x:number,y:number):number{letz:number=x+y;returnz;}??蛇x參數(shù)ArkTS支持可選參數(shù),其格式為name?:Type。如果在函數(shù)調(diào)用中省略了該參數(shù),則會(huì)使用undefined作為實(shí)參。例如:functionhello(name?:string){if(name==undefined){console.log('Hello!');}else{console.log(`Hello,${name}!`);}}。函數(shù)定義與基本運(yùn)用Rest參數(shù)函數(shù)的最后一個(gè)參數(shù)可以是rest參數(shù),允許函數(shù)接受任意數(shù)量的實(shí)參。例如:functionsum(...numbers:number[]):number{letres=0;for(letnofnumbers)res+=n;returnres;}。默認(rèn)參數(shù)如果在函數(shù)調(diào)用中省略了該參數(shù),則會(huì)使用默認(rèn)值。例如:functiontotal(price:number,weight:number=2):number{returnn*weight;}。函數(shù)返回類型返回值類型如果可以從函數(shù)體內(nèi)推斷出函數(shù)返回類型,則可在函數(shù)聲明中省略標(biāo)注返回類型。不需要返回值的函數(shù)的返回類型可以顯式指定為void或省略標(biāo)注。例如:functionadd(x:number,y:number):number{letz:number=x+y;returnz;}。無返回值沒有返回值的函數(shù)返回類型可以顯式指定為void或省略標(biāo)注。例如:functionhello(){console.log('Hello!');}。函數(shù)與異常處理try-catch-finallytry語句用于捕獲和處理異?;蝈e(cuò)誤,它與catch塊配合使用,try塊中放置可能發(fā)生異常的語句,catch塊用于處理捕獲到的異常。finally塊中的語句無論是否發(fā)生異常都會(huì)執(zhí)行。例如:try{letresult=myOperation();console.log("結(jié)果:",result);}catch(e){console.error("發(fā)生異常:",e);}finally{cleanUp();}。內(nèi)置函數(shù)庫(kù)數(shù)學(xué)函數(shù)庫(kù)MathMath庫(kù)是內(nèi)置的數(shù)學(xué)函數(shù)庫(kù),提供了許多常用的數(shù)學(xué)操作和函數(shù)。例如:Math.abs(x)返回x的絕對(duì)值;Math.ceil(x)返回大于或等于x的最小整數(shù);Math.floor(x)返回小于或等于x的最大整數(shù)。字符串處理函數(shù)ArkTS不包含完整的字符串處理函數(shù)庫(kù),但它可以使用JavaScript的標(biāo)準(zhǔn)字符串方法。例如:charAt(index)返回指定位置的字符;concat(string1,...,stringN)連接字符串;indexOf(searchValue[,fromIndex])返回字符串中第一次出現(xiàn)的指定值的索引。箭頭函數(shù)箭頭函數(shù)是比普通函數(shù)更簡(jiǎn)潔的一種函數(shù)寫法,同時(shí)還有一些特性,例如繼承外部作用域的this值。例如:letbuy=(price:number,weight:number)=>{letresult:number=price*weight;returnresult;}。ArkTS類06類的定義和基本用法類的定義在ArkTS中,類聲明引入一個(gè)新類型,定義類的關(guān)鍵字為class,后面緊跟類名,并定義其字段、方法和構(gòu)造函數(shù)。例如:classUser{name:string='';gender:string='';constructor(name:string,sex:string){=name;this.gender=sex;}userInfo():string{return+''+this.gender;}}。類的實(shí)例化定義類后,可以使用關(guān)鍵字new創(chuàng)建實(shí)例。例如:letuser1=newUser('Fashion','male');console.log(user1.userInfo())。屬性訪問可以給每個(gè)屬性定義get和set方法,用于提供對(duì)對(duì)象屬性的受控訪問。例如:classUser{name:string='';gender:string='';getName():string{return;}setName(name:string):void{=name;}}。類的繼承01繼承的定義繼承就是子類繼承父類的特征和行為,使得子類具有父類相同的行為。ArkTS允許使用繼承來擴(kuò)展現(xiàn)有的類,對(duì)應(yīng)的關(guān)鍵字為extends。例如:classStudentextendsUser{privatedepartment:string;constructor(name:string,gender:string,department:string){super(name,gender);this.department=department;}publicstudentInfo():string{returnthis.userInfo()+`studyin${this.department}`;}}。02調(diào)用父類方法關(guān)鍵字super可用于訪問父類的實(shí)例字段、實(shí)例方法和構(gòu)造函數(shù)。例如:super(name,gender)。03方法重寫子類可以重寫其父類中定義的方法的實(shí)現(xiàn)。重寫的方法必須具有與原始方法相同的參數(shù)類型和相同或派生的返回類型。例如:classStudentextendsUser{publicstudentInfo():string{returnthis.userInfo()+`studyin${this.department}`;}}。靜態(tài)字段與靜態(tài)方法靜態(tài)字段使用關(guān)鍵字static將屬性字段聲明為靜態(tài),靜態(tài)字段屬于類本身。例如:classUser{staticage:number=20;getAge():number{returnUser.age;}}。靜態(tài)方法使用關(guān)鍵字static將方法聲明為靜態(tài),靜態(tài)方法屬于類本身,只能訪問靜態(tài)字段。例如:classUser{staticsetAge(num:number):void{User.age=num;}}。字段初始化初始化要求為了減少運(yùn)行時(shí)的錯(cuò)誤和獲得更好的執(zhí)行性能,ArkTS要求所有字段在聲明時(shí)或者構(gòu)造函數(shù)中顯式初始化。例如:classPerson{name:string;}letjack=newPerson();jack.getName().length;。避免異常更合適的做法是將返回類型標(biāo)注為"string|undefined",或者定義時(shí)直接定義name:string='',避免異常的發(fā)生。對(duì)象字面量字面量定義對(duì)象字面量是一個(gè)表達(dá)式,可用于創(chuàng)建類實(shí)例并提供一些初始值。它在某些情況下更方便,可以用來代替new表達(dá)式。例如:letuser1:User={name:'Fashion',gender:'male'};console.log(user1.gender)。ArkTS接口07接口定義基于接口定義對(duì)象接口聲明可以引入新類型,接口是定義代碼協(xié)定的一種常見方式。例如:interfacePerson{name:string;age:number;weight:number;}letym:Person={name:'張山',age:18,weight:90}。基于接口定義方法接口通常包含屬性和方法的聲明。例如:interfacePerson{dance:()=>void;sing:(song:string)=>void;}letym:Person={dance:()=>{console.log('老師說','我來跳個(gè)舞');},sing:(song:string)=>{console.log('老師說','我來唱首',song);}}。接口繼承接口繼承的定義ArkTS接口和類一樣,也可以使用extends關(guān)鍵字繼承。例如:interfaceChaoRenextendsPerson{chibang:number;}letcr:ChaoRen={name:'超人',id:1999,chibang:2,dance:(danName:string)=>{console.log(`超人會(huì)飛,舞蹈名字:${danName}`);}}。接口實(shí)現(xiàn)類實(shí)現(xiàn)接口ArkTS類使用implements來實(shí)現(xiàn)接口,注意在implements時(shí)類必須要有某些屬性和方法。例如:interfaceIAnimal{name:string;feature:string;id:number;sayHello:()=>void;}classCatimplementsIAnimal{name:string='小貓';feature:string='我可以上樹';id:number=12345;sayHello(){console.log('這是Cat,會(huì)抓老鼠');}fun1(){console.log('Cat類自己的方法');}}。接口實(shí)現(xiàn)的注意事項(xiàng)實(shí)現(xiàn)接口的類必須實(shí)現(xiàn)接口中定義的所有屬性和方法,否則會(huì)報(bào)錯(cuò)。ArkTS空安全08聯(lián)合類型設(shè)置為空空值判斷在獲取可能為空的值的時(shí)候也需要特殊處理,例如:if(x!=null){/*dosomething*/}??罩堤幚砟J(rèn)情況下,ArkTS中的所有類型都是不可為空的。如果要設(shè)置為空,需要進(jìn)行特殊的處理。例如:letx:number|null=null;。非空斷言運(yùn)算符斷言使用后綴運(yùn)算符!可用于斷言其操作數(shù)為非空。應(yīng)用于空值時(shí),運(yùn)算符將拋出錯(cuò)誤。例如:letx:number|null=1;lety:number;y=x!+1;??罩岛喜⑦\(yùn)算符合并運(yùn)算空值合并二元運(yùn)算符??用于檢查左側(cè)表達(dá)式的值是否等于null。如果是,則表達(dá)式的結(jié)果為右側(cè)表達(dá)式;否則,結(jié)果為左側(cè)表達(dá)式。例如:classPerson{name:string|null=null;getName():string{return??'';}}。ArkTS模塊09模塊的導(dǎo)出命名導(dǎo)出在一個(gè)模塊中,可以使用export關(guān)鍵字來導(dǎo)出變量、函數(shù)、類等,以便其他模塊可以使用它們。例如:exportfunctionadd(a:number,b:number):number{returna+b;}。默認(rèn)導(dǎo)出每個(gè)模塊只能有一個(gè)默認(rèn)導(dǎo)出,導(dǎo)入時(shí)可以自定義名稱。例如:exportdefaultfunctionmultiply(a:number,b:number):number{returna*b;}。模塊的導(dǎo)入命名導(dǎo)入在模塊中,可以使用import關(guān)鍵字來導(dǎo)入其他模塊中導(dǎo)出的內(nèi)容。例如:import{add,subtract}from'./mathUtils';。默認(rèn)導(dǎo)入導(dǎo)入默認(rèn)導(dǎo)出的內(nèi)容。例如:importmultiplyfrom'./mathUtils';。ArkTS泛型10泛型類型泛型定義泛型類型允許定義一個(gè)可以處理多種類型的類型。例如:typeGenericArray<T>=Array<T>;constnumberArray:GenericArray<number>=[1,2,3];conststringArray:GenericArray<string>=["a","b","c"];。泛型函數(shù)泛型函數(shù)定義泛型函數(shù)允許編寫可以處理多種類型的函數(shù)。例如:functiongetFirstElement<T>(arr:T[]):T|undefined{returnarr.length>0?arr[0]:undefined;}。泛型接口泛型接口定義泛型接口允許定義一個(gè)可以處理多種類型的接口。例如:interfaceKeyValuePair<K,V>{key:K;value:V;}constnumberKeyValue:KeyValuePair<number,string>={key:1,value:"one"};。泛型類泛型類定義泛型類允許定義一個(gè)可以處理多種類型的類。例如:classContainer<T>{privatevalue:T;constructor(value:T){this.value=value;}getValue():T{returnthis.value;}}constnumberContainer=newContainer<number>(42);conststringContainer=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 深度解析(2026)《GBT 19315-2003小艇 最大裝載量》
- 直播運(yùn)營(yíng)面試題及主播培訓(xùn)方案含答案
- 客戶關(guān)系經(jīng)理面試題含答案
- 提取物項(xiàng)目可行性分析報(bào)告范文(總投資10000萬元)
- 風(fēng)電場(chǎng)設(shè)備管理員工作考核標(biāo)準(zhǔn)
- 特殊職業(yè)人群哮喘遠(yuǎn)程監(jiān)測(cè)的個(gè)性化方案
- 深度解析(2026)《GBT 18932.8-2002蜂蜜中紅霉素殘留量的測(cè)定方法 杯碟法》(2026年)深度解析
- 深度解析(2026)《GBT 18895-2002面向翻譯的術(shù)語編纂》
- 法律知識(shí)競(jìng)賽試題及答案
- 西門子工程師職位面試題目詳解
- 公司保潔員考試題及答案
- 全球重點(diǎn)區(qū)域算力競(jìng)爭(zhēng)態(tài)勢(shì)分析報(bào)告(2025年)-
- 2025北京熱力熱源分公司招聘10人參考筆試題庫(kù)及答案解析
- 2025年湖南省法院系統(tǒng)招聘74名聘用制書記員筆試參考題庫(kù)附答案
- 2025廣西機(jī)電職業(yè)技術(shù)學(xué)院招聘教職人員控制數(shù)人員79人備考題庫(kù)及答案解析(奪冠)
- 2026屆高考政治一輪復(fù)習(xí):必修2 經(jīng)濟(jì)與社會(huì) 必背主干知識(shí)點(diǎn)清單
- 護(hù)士職業(yè)壓力管理與情緒調(diào)節(jié)策略
- 貴州國(guó)企招聘:2025貴州涼都能源有限責(zé)任公司招聘10人備考題庫(kù)及答案詳解(必刷)
- 招標(biāo)人主體責(zé)任履行指引
- 我的新式汽車(課件)-人美版(北京)(2024)美術(shù)二年級(jí)上冊(cè)
- 消化內(nèi)鏡預(yù)處理操作規(guī)范與方案
評(píng)論
0/150
提交評(píng)論