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

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

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

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

Partial 的用法

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

示例:

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

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

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

Pick 的用法

  • 作用:從一個類型中挑選指定的屬性,組成一個新類型。
  • 適用場景:API 返回時只暴露部分字段(如列表頁僅需 idname),避免敏感信息泄露。
  • 源碼實現(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'>;
// 等價于:{ id: number; name: string; email: string; }

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

組合使用示例

結合 PartialPick 可實現(xiàn)更精細的類型控制:

// 創(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 };

關鍵區(qū)別總結

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

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

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

相關文章

  • Mammoth.js安裝和配置指南詳細步驟

    Mammoth.js安裝和配置指南詳細步驟

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

    淺談小程序globalData的那些事兒

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

    Script的加載方法小結

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

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

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

    javascript 遮照層效果

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

    JavaScript 繼承的實現(xiàn)

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

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

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

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

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

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

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

    純前端導出txt文本文件具體流程

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

最新評論

开阳县| 湖州市| 海口市| 抚宁县| 利辛县| 铜山县| 抚宁县| 恩施市| 东台市| 普安县| 昔阳县| 漳州市| 阿合奇县| 馆陶县| 沁阳市| 会泽县| 富宁县| 句容市| 安岳县| 武邑县| 太谷县| 左云县| 体育| 酉阳| 沧源| 滦平县| 龙江县| 航空| 元谋县| 浦江县| 大兴区| 盐津县| 东丽区| 靖西县| 夏津县| 于都县| 和龙市| 河东区| 保康县| 陵水| 衡东县|