最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于TypeScript開發(fā)的6六個實(shí)用小技巧分享

 更新時間:2021年09月03日 11:07:13   作者:_紅領(lǐng)巾  
TypeScript是Javascrip t超集,支持靜態(tài)類型檢測,可以在編譯期提前暴露問題,節(jié)省debug時間,下面這篇文章主要給大家介紹了關(guān)于TypeScript開發(fā)的6六個實(shí)用小技巧,需要的朋友可以參考下

本文總結(jié)一下使用TypeScript開發(fā)應(yīng)用程序的一點(diǎn)小經(jīng)驗(yàn)。說之前,推薦一個VSCODE立即執(zhí)行TS代碼的插件quokka.js,

使用方式,ctrl+shipt+p,輸入關(guān)鍵字quokka

回車之后,輸入代碼之后會立即執(zhí)行

1. 開發(fā)之前確定實(shí)體類型

在正式編碼之前,如果沒有接口文檔的話,最好能拿到數(shù)據(jù)字典,根據(jù)數(shù)據(jù)字典定義一下項目中實(shí)體類型,例如數(shù)據(jù)字典中有用戶表,企業(yè)表,我們就可以新建一個types文件夾,把對應(yīng)的類型放到不同的文件中,目錄如下:

types
    user.ts
    corp.ts
    ...

推薦使用interface定義實(shí)體類型,比type語義化更好

interface User{
    id:string
    name:string
}

2. 請求接口時只需要定義自己需要用到的字段

定義類型時只需要定義自己需要用到的字段,沒用的字段不需要定義。因?yàn)楹蠖朔祷氐臄?shù)據(jù)是什么類型,需要前端來指定類型然后TS做判斷,如果前端不指定類型,TS根本沒辦法判斷。

例如后端返回的數(shù)據(jù)如下:

user:{
    id:1,
    name:'xiaoming',
    sex:0
}

定義的類型如下:

interface User{
    id:number,
    name:string
}

這種情況下,TS只會檢查user中有沒有id和name,對于sex是忽略的

3. 使用枚舉類型

像性別(男女),管理員類型(超管、普通用戶),會員類型(普通用戶,VIP,超級VIP)這種類型的數(shù)據(jù)結(jié)構(gòu)適合用枚舉類型來定義,枚舉類型也可以作為值來使用。

舉個栗子:

//使用枚舉類型來定義會員類型
enum UserType{
    Common=0,
    VIP=1,
    SuperVIP=2
}
class User{
    id:string
    name:string
    type:UserType
}
let  userList:User[]=[]

userList.push({
    id:'001',
    name:'Jack',
    type:UserType.SuperVIP //枚舉類型定義的類型可以作為值來使用
})

枚舉類型也可以是字符串,舉例如下,用法同上

enum UserType{
    Common='DiaoSi',
    VIP='LowBVIP',
    SuperVIP='SuperVIP'
}

4. DOM元素的類型要正常給

對于DOM元素,不要給any,人家是有類型的。
一般來說,所有的標(biāo)簽都繼承自HTMLElement,然后不同標(biāo)簽有不同的類型,這個類型往往是套路化的,例如video元素的類型就是HTMLVideoElement,div元素的類型是HTMLDivElement,canvas元素的類型是HTMLCanvasElement,以此類推。其實(shí)常用的類型并不多,簡單列一下:

let element:HTMLElement=null

let video:HTMLVideoElement=null

let div:HTMLDivElement=null

let canvas:HTMLCanvasElement=null

let e:Event =null //事件對象  e.target

一定要給DOM元素類型,這樣你才能收獲代碼提示

這里補(bǔ)充一個上傳文件時類型怎么給,給Input元素綁定了onChange方法,方法如下:

onChange(event: Event): void {
  if ((event.target as HTMLInputElement).files && (event.target as HTMLInputElement).files.length) {
    const [file] = event.target.files;
  }
}

5.對象的類型要怎么給

有一個函數(shù),接收對象作為參數(shù),類型要怎么給?

首先,不要給any,不要動不動就給any,較Low,想想對象包含啥,一個key,一個value。key的話肯定是個string類型,value要看具體需求,有可能你的value只能是數(shù)字或者字符串,那就 number|string,如果啥都可以,那就給any吧

//定義對象的類型,key一般是string,value可以按照需求給
interface ObjType{
	[key:string]:any
}
function deepCopy(obj:ObjType){
    for(let key in obj){
        console.log(obj[key])
    }

}

let obj={name:"Jack"}
deepCopy(obj)

6.結(jié)構(gòu)賦值時類型怎么給

你有一個函數(shù),接收一個對象,在對象中對參數(shù)進(jìn)行解構(gòu),結(jié)構(gòu)得到的對象屬性的類型要怎么給,代碼如下:

const user={
    name:'Jack',
    age:10,
    friends:[{id:0,name:'Peter',connect:100},{id:1,name:'Alice',connect:69}]
}

interface Friend{
    id:number,
    name:string,
    connect:number
}


function handleFriends({friends}){//friends的類型要怎么給
    friends.map(item=>item.connect)
}

思考10秒鐘,

10

9

8

7

6

5

4

3

2

1

放答案:

interface Friend{
    id:number,
    name:string,
    connect:number
}

function handleFriends({friends}:{friends:Friend[]}){
    friends.map(item=>item.connect)
}

這種在react hooks用的較多。

總結(jié)

到此這篇關(guān)于TypeScript開發(fā)小技巧分享的文章就介紹到這了,更多相關(guān)TypeScript開發(fā)小技巧內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • js?indexOf?的正確用法示例詳解

    js?indexOf?的正確用法示例詳解

    indexOf()?方法可返回某個指定的字符串值在字符串中首次出現(xiàn)的位置,這篇文章主要介紹了js?indexOf?的正確用法,需要的朋友可以參考下
    2023-02-02
  • js 數(shù)據(jù)類型判斷的方法

    js 數(shù)據(jù)類型判斷的方法

    這篇文章主要介紹了js 數(shù)據(jù)類型判斷的方法,幫助大家更好的理解和使用JavaScript,感興趣的朋友可以了解下
    2020-12-12
  • 淺談JS中var,let和const的區(qū)別

    淺談JS中var,let和const的區(qū)別

    這篇文章主要介紹了淺談JS中var,let和const的區(qū)別,let和const是ES6新增的關(guān)鍵字,詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-07-07
  • 原生JavaScript實(shí)現(xiàn)換膚

    原生JavaScript實(shí)現(xiàn)換膚

    這篇文章主要為大家詳細(xì)介紹了原生JavaScript實(shí)現(xiàn)換膚,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • js嚴(yán)格模式總結(jié)(分享)

    js嚴(yán)格模式總結(jié)(分享)

    下面小編就為大家?guī)硪黄猨s嚴(yán)格模式總結(jié)(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • 詳細(xì)總結(jié)Javascript中的焦點(diǎn)管理

    詳細(xì)總結(jié)Javascript中的焦點(diǎn)管理

    相信大家都知道焦點(diǎn)作為javascript中的一個重要功能,基本上和頁面交互都離不開焦點(diǎn)。但卻少有人對焦點(diǎn)管理系統(tǒng)地做總結(jié)歸納。本文就javascript中的焦點(diǎn)管理作詳細(xì)介紹,有需要的朋友們可以參考借鑒。
    2016-09-09
  • JavaScript–Apple設(shè)備檢測示例代碼

    JavaScript–Apple設(shè)備檢測示例代碼

    JavaScript–Apple設(shè)備檢測示例代碼。需要的朋友可以過來參考下,希望對大家有所幫助
    2013-11-11
  • 詳解Python中l(wèi)ogging日志模塊在多進(jìn)程環(huán)境下的使用

    詳解Python中l(wèi)ogging日志模塊在多進(jìn)程環(huán)境下的使用

    許多應(yīng)用程序中都會有日志模塊,用于記錄系統(tǒng)在運(yùn)行過程中的一些關(guān)鍵信息,以便于對系統(tǒng)的運(yùn)行狀況進(jìn)行跟蹤。這篇文章給大家主要介紹了在Python中l(wèi)ogging日志模塊在多進(jìn)程環(huán)境下的使用,需要的朋友可以參考借鑒,下面來一起看看吧。
    2016-12-12
  • 前端進(jìn)階之教你利用javascript存儲函數(shù)

    前端進(jìn)階之教你利用javascript存儲函數(shù)

    這篇文章主要給大家介紹了關(guān)于利用javascript存儲函數(shù)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用js具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2021-11-11
  • javascript使用正則實(shí)現(xiàn)去掉字符串前面的所有0

    javascript使用正則實(shí)現(xiàn)去掉字符串前面的所有0

    這篇文章主要介紹了javascript使用正則實(shí)現(xiàn)去掉字符串前面的所有0,需要的朋友可以參考下
    2018-07-07

最新評論

咸宁市| 邢台市| 蒙阴县| 克什克腾旗| 南安市| 祁连县| 任丘市| 平阳县| 衡阳市| 剑河县| 南汇区| 盐城市| 兴国县| 无为县| 巢湖市| 区。| 镇安县| 西贡区| 阿克苏市| 密云县| 景谷| 楚雄市| 亚东县| 文山县| 澄迈县| 武义县| 台南县| 阳山县| 南城县| 井冈山市| 定边县| 长乐市| 中卫市| 高碑店市| 英吉沙县| 钟祥市| 盐池县| 哈巴河县| 营口市| 兰考县| 科技|