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

TypeScript?中?Partial?和?Pick?用法

 更新時間:2026年05月27日 09:26:34   作者:AI?前端  
TypeScript中的Partial和Pick是常用的工具類型,Partial將類型所有屬性變?yōu)榭蛇x,Pick從類型中選取指定屬性組成新類型,適用于字段篩選場景,下面就來詳細(xì)的介紹一下

在 TypeScript 中,PartialPick 是兩個常用的工具類型(Utility Types),用于更靈活地操作對象類型,尤其適用于 API 請求、表單處理、組件 Props 等場景。

Partial 的用法

  • 作用:將一個類型的所有屬性變?yōu)榭蛇x(即添加 ?)。
  • 適用場景:更新操作(如 PATCH 請求),只需傳入部分字段。
  • 源碼實(shí)現(xiàn):
type Partial<T> = { [P in keyof T]?: T[P]; };

示例:

interface User {
  id: number;
  name: string;
  email: string;
}

type UpdateUserDto = Partial<User>;
// 等價(jià)于:{ id?: number; name?: string; email?: string; }

const update: UpdateUserDto = { name: "Alice" }; // ? 合法

Pick 的用法

  • 作用:從一個類型中挑選指定的屬性,組成一個新類型。
  • 適用場景:API 返回時只暴露部分字段(如列表頁僅需 idname),避免敏感信息泄露。
  • 源碼實(shí)現(xiàn):
type Pick<T, K extends keyof T> = { [P in K]: T[P]; };

示例:

interface User {
  id: number;
  name: string;
  email: string;
  password: string;
}

type UserPreview = Pick<User, 'id' | 'name' | 'email'>;
// 等價(jià)于:{ id: number; name: string; email: string; }

const user: UserPreview = { id: 1, name: "Bob", email: "bob@example.com" }; // ? 合法
// user.password; // ? 報(bào)錯:類型中不包含 password

組合使用示例

結(jié)合 PartialPick 可實(shí)現(xiàn)更精細(xì)的類型控制:

// 創(chuàng)建時不需要 id,且 password 必填
type CreateUserDto = Omit<User, 'id'> & { password: string };

// 更新時排除 id,其他字段可選
type UpdateUserDto = Partial<Omit<User, 'id'>> & { id: number };

// 分頁查詢只允許篩選 name 和 email
type UserQueryParams = Partial<Pick<User, 'name' | 'email'>> & { page: number; pageSize: number };

關(guān)鍵區(qū)別總結(jié)

特性Partial<T>Pick<T, K>
目的所有屬性變可選只保留指定屬性
屬性數(shù)量不變(但都可選)減少(僅保留 K 中的屬性)
典型用途更新請求、表單草稿列表展示、安全字段暴露

?? 提示:兩者都只作用于第一層屬性,嵌套對象內(nèi)部不會遞歸處理。若需深層操作,可考慮使用第三方庫如 ts-toolbelt 或自定義遞歸工具類型。

到此這篇關(guān)于TypeScript 中 Partial 和 Pick 用法的文章就介紹到這了,更多相關(guān)TypeScript Partial Pick內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Mammoth.js安裝和配置指南詳細(xì)步驟

    Mammoth.js安裝和配置指南詳細(xì)步驟

    Mammoth.js是開源工具,將.docx文檔轉(zhuǎn)換為HTML格式,支持JavaScript開發(fā),這篇文章主要介紹了Mammoth.js安裝和配置指南的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-06-06
  • 淺談小程序globalData的那些事兒

    淺談小程序globalData的那些事兒

    這篇文章主要介紹了淺談小程序globalData的那些事兒,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Script的加載方法小結(jié)

    Script的加載方法小結(jié)

    對動態(tài)加載腳本,需要重點(diǎn)關(guān)注的一個問題是,所動態(tài)加載的JS腳本的接口依賴問題。
    2011-01-01
  • WEEX環(huán)境搭建與入門詳解

    WEEX環(huán)境搭建與入門詳解

    這篇文章主要介紹了WEEX環(huán)境搭建與入門詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • javascript 遮照層效果

    javascript 遮照層效果

    遮照層效果實(shí)現(xiàn)代碼。
    2009-09-09
  • JavaScript 繼承的實(shí)現(xiàn)

    JavaScript 繼承的實(shí)現(xiàn)

    正因?yàn)镴avaScript本身沒有完整的類和繼承的實(shí)現(xiàn),并且我們也看到通過手工實(shí)現(xiàn)的方式存在很多問題, 因此對于這個富有挑戰(zhàn)性的任務(wù)網(wǎng)上已經(jīng)有很多實(shí)現(xiàn)了
    2009-07-07
  • JSDoc 介紹使用規(guī)范JsDoc的使用介紹

    JSDoc 介紹使用規(guī)范JsDoc的使用介紹

    JsDoc Toolkit 是一個把js描述格式化成文檔的工具。開發(fā)者只需按JsDoc的規(guī)范寫好注釋就可以很方便導(dǎo)出文檔。它是google 推薦的 JsDoc生成工具。
    2011-02-02
  • 微信小程序?qū)崿F(xiàn)拍照功能

    微信小程序?qū)崿F(xiàn)拍照功能

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)拍照功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 前端原生js實(shí)現(xiàn)拖拽排課效果實(shí)例

    前端原生js實(shí)現(xiàn)拖拽排課效果實(shí)例

    這篇文章主要介紹了如何實(shí)現(xiàn)一個簡單的課程表拖拽功能,通過HTML、CSS和JavaScript的配合,我們實(shí)現(xiàn)了課程項(xiàng)的拖拽、放置和顯示功能,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-02-02
  • 純前端導(dǎo)出txt文本文件具體流程

    純前端導(dǎo)出txt文本文件具體流程

    TXT作為純文本格式,只支持無格式的文本內(nèi)容,不包括任何樣式信息,下面這篇文章主要給大家介紹了關(guān)于純前端導(dǎo)出txt文本文件的相關(guān)資料,文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下
    2024-08-08

最新評論

长春市| 水富县| 钟祥市| 望江县| 方城县| 黄浦区| 丰台区| 潍坊市| 舟曲县| 江川县| 曲周县| 烟台市| 精河县| 马关县| 海盐县| 塔城市| 达拉特旗| 砚山县| 五华县| 河北区| 阆中市| 新竹市| 同江市| 驻马店市| 桐梓县| 霍山县| 沙河市| 巴林左旗| 梅河口市| 修水县| 琼海市| 三亚市| 鹰潭市| 高碑店市| 大港区| 共和县| 年辖:市辖区| 剑阁县| 红桥区| 临朐县| 阜新市|