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

TS?項(xiàng)目中高效處理接口返回?cái)?shù)據(jù)方法詳解

 更新時(shí)間:2023年01月05日 08:40:26   作者:xietiansheng  
這篇文章主要為大家介紹了TS?項(xiàng)目中如何高效的處理接口返回的數(shù)據(jù)的方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

寫(xiě)在前面

TypeScript 項(xiàng)目中,TypeScript 對(duì)接口返回?cái)?shù)據(jù)的處理,是日常項(xiàng)目開(kāi)發(fā)中一個(gè)比較棘手的問(wèn)題。

那我們?cè)撊绾?高效 的解決這個(gè)問(wèn)題呢?

問(wèn)題

項(xiàng)目中使用 ts 都會(huì)碰到如下場(chǎng)景:從接口請(qǐng)求過(guò)來(lái)的數(shù)據(jù)該如何進(jìn)行處理?

const fetchInfo = async (url: string, id: string) => {
  return $http.get(url, params);
}
const res = await fetchInfo('/info', '886');
// 假設(shè) `/info` 接口返回如下數(shù)據(jù)
{ id: '886', ??:{ name: 'Jack', ??: { brand: 'Chinese Pineapple' } } }

那我們?cè)撊绾蔚玫??? 的名字以及使用的 ?? 品牌呢?

解答

目前比較常用的寫(xiě)法有以下兩種

any 大法:

const res:any = await fetchInfo('/info', '886');
console.log(res.??.name) // Jack
console.log(res.??.age)  // 3

更加優(yōu)雅的 interface 寫(xiě)法:

/** 根據(jù)接口返回的數(shù)據(jù),聲明對(duì)應(yīng)的 interface **/
interface Info {
  id: string;
  ??: Monkey;
}
interface Monkey {
  name: string;
  ??: Phone;
}
interface Phone {
  brand: string;
}
/** 改寫(xiě) `fetchInfo` 函數(shù)返回值類(lèi)型 **/
const fetchInfo = async (url: string, id: string): Promise<Info> => {
  return $http.get(url, params);
}
const res = await fetchInfo('/info', '886');
console.log(res.??.name) // Jack
console.log(res.??.age)  // 3

區(qū)別

兩種實(shí)現(xiàn)方式的區(qū)別十分明顯:

any 大法

  • ? 前期開(kāi)發(fā)代碼量少,快速簡(jiǎn)單。
  • ?? 由于未定義 interface 導(dǎo)致整個(gè)項(xiàng)目充斥著大量 any 類(lèi)型,項(xiàng)目淪為 AnyScript
  • ?? 無(wú)法獲得健全的 ts 語(yǔ)法檢測(cè)功能,弱化了使用 ts 的作用。
  • ?? 后期維護(hù)成本高,后端修改字段,ts 語(yǔ)法無(wú)法檢測(cè)。

interface

  • ?? 前期開(kāi)發(fā)代碼量大,需要為每個(gè)接口定義 interface。
  • ? 獲得豐富的代碼提示以及語(yǔ)法檢測(cè)能力。
  • ? 后期項(xiàng)目易維護(hù),接口字段改動(dòng),只需要同步更新 interface 數(shù)據(jù)即可實(shí)現(xiàn)類(lèi)型檢測(cè)。

總結(jié)

通過(guò)上面的總結(jié)不難看出,interface 方式優(yōu)勢(shì)眾多,但同時(shí)也有著一個(gè)致命的弊端:

我們?cè)谇捌诘拈_(kāi)發(fā)過(guò)程中需要對(duì)所有接口返回的不同數(shù)據(jù)類(lèi)型定義對(duì)應(yīng)的 interface。

例如上面示例的 /info 接口我們就需要定義三個(gè) interface ,實(shí)際項(xiàng)目中,字段數(shù)量可能達(dá)到幾十上百個(gè)!

interface Info {
  id: string;
  ??: Monkey;
}
interface Monkey {
  name: string;
  ??: Phone;
}
interface Phone {
  brand: string;
}

這對(duì)于我們前期開(kāi)發(fā)效率來(lái)說(shuō)無(wú)疑是 毀滅性 的??????

?? 必備高效神器

基于上面 interface 方式所面臨的問(wèn)題

給大家安利一款前端在線代碼生成工具:JsonToAnyGitee / GitHub

能夠很輕松的將我們接口返回的 JSON 數(shù)據(jù)轉(zhuǎn)換成我們前端所需要的 interface

最大限度的節(jié)省了我們手動(dòng)定義 interface 的時(shí)間

p>至此,我們完美解決的了 interface 方式最大的弊端,一勞永逸??。

以上就是TS 項(xiàng)目中如何高效的處理接口返回的數(shù)據(jù)的詳細(xì)內(nèi)容,更多關(guān)于TS 項(xiàng)目處理接口返回?cái)?shù)據(jù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 微信小程序中用WebStorm使用LESS

    微信小程序中用WebStorm使用LESS

    這篇文章主要介紹了微信小程序中用WebStorm使用LESS的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • JS前端輕量fabric.js系列之畫(huà)布初始化

    JS前端輕量fabric.js系列之畫(huà)布初始化

    這篇文章主要為大家介紹了JS前端輕量fabric.js系列之畫(huà)布初始化示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • 用JS創(chuàng)建一個(gè)錄屏功能

    用JS創(chuàng)建一個(gè)錄屏功能

    這篇文章主要介紹了利用JS創(chuàng)建一個(gè)錄屏功能,創(chuàng)建這個(gè)功能錢(qián)我們首先創(chuàng)建一個(gè)HTML文件,包含記錄按鈕和一個(gè)播放標(biāo)簽,下面來(lái)看看創(chuàng)建的詳細(xì)過(guò)程
    2021-11-11
  • 微信小程序 傳值取值的幾種方法總結(jié)

    微信小程序 傳值取值的幾種方法總結(jié)

    這篇文章主要介紹了微信小程序 傳值取值的幾種方法總結(jié)的相關(guān)資料,這里對(duì)這幾種方法進(jìn)行了詳解,并附示例代碼,需要的朋友可以參考下
    2017-01-01
  • JS中this的4種綁定規(guī)則詳解

    JS中this的4種綁定規(guī)則詳解

    如果你學(xué)過(guò)面向?qū)ο缶幊?,那你肯定知道干什么用的,如果你沒(méi)有學(xué)過(guò),那么暫時(shí)可以不用看這篇文章,this既不指向函數(shù)自身,也不指函數(shù)的詞法作用域,具體怎么使用JS中的this,JS中的this綁定規(guī)則又是什么?
    2020-02-02
  • You-Dont-Know-JS詞法作用域及兩種常見(jiàn)的模型學(xué)習(xí)文檔

    You-Dont-Know-JS詞法作用域及兩種常見(jiàn)的模型學(xué)習(xí)文檔

    這篇文章主要為大家介紹了JS?詞法作用域及兩種常見(jiàn)的模型詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • 微信小程序使用navigateTo數(shù)據(jù)傳遞的實(shí)例

    微信小程序使用navigateTo數(shù)據(jù)傳遞的實(shí)例

    這篇文章主要介紹了微信小程序使用navigateTo數(shù)據(jù)傳遞的實(shí)例的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • 微信小程序之前臺(tái)循環(huán)數(shù)據(jù)綁定

    微信小程序之前臺(tái)循環(huán)數(shù)據(jù)綁定

    這篇文章主要介紹了微信小程序之前臺(tái)循環(huán)數(shù)據(jù)綁定的相關(guān)資料,這里提供實(shí)例幫助大家學(xué)習(xí)理解這部分內(nèi)容,需要的朋友可以參考下
    2017-08-08
  • Server-sent?events實(shí)時(shí)獲取服務(wù)端數(shù)據(jù)技術(shù)詳解

    Server-sent?events實(shí)時(shí)獲取服務(wù)端數(shù)據(jù)技術(shù)詳解

    這篇文章主要為大家介紹了Server-sent?events實(shí)時(shí)獲取服務(wù)端數(shù)據(jù)技術(shù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • 前端JS實(shí)現(xiàn)太極圖案圖文示例

    前端JS實(shí)現(xiàn)太極圖案圖文示例

    這篇文章主要為大家介紹了前端JS實(shí)現(xiàn)太極圖案圖文示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09

最新評(píng)論

高唐县| 英德市| 楚雄市| 永城市| 嵩明县| 浑源县| 北宁市| 康马县| 合山市| 沭阳县| 华池县| 贵港市| 福建省| 桦川县| 东乌| 阿合奇县| 通道| 桂平市| 潜江市| 报价| 开平市| 津南区| 普格县| 额尔古纳市| 泰兴市| 靖边县| 广水市| 格尔木市| 张掖市| 虎林市| 冕宁县| 成安县| 奉化市| 常宁市| 天等县| 定结县| 上犹县| 新化县| 乌什县| 图片| 静乐县|