首頁 > 軟體

JavaScript庫omit原始碼解析

2022-12-11 14:01:15

omit 庫

npm

github

克隆倉庫

可以使用Github Codespaces 功能在瀏覽器中偵錯程式碼,如圖:

GitHub Codespaces 是 GitHub 提供的一種線上開發環境,它可以讓你在瀏覽器中使用各種工具來開發和偵錯程式碼,而不用把這些工具安裝在你的計算機上。

GitHub Codespaces 與 Git 整合,可以在瀏覽器中編輯程式碼並提交更改。它還提供了許多其他方便的功能,比如程式碼補全和錯誤檢查。使用 GitHub Codespaces 可以節省你安裝軟體和設定開發環境的時間,讓你更快地進行開發。

原始碼

function omit(obj, fields) {
  // eslint-disable-next-line prefer-object-spread
  const shallowCopy = Object.assign({}, obj);
  for (let i = 0; i < fields.length; i += 1) {
    const key = fields[i];
    delete shallowCopy[key];
  }
  return shallowCopy;
}
export default omit;

解析

用於刪除 JavaScript 物件中指定欄位的函數。它接收兩個引數:objfields

它首先通過使用 Object.assign() 方法建立了一個 obj 的淺拷貝,並將該拷貝賦值給變數 shallowCopy。然後,它使用 for 迴圈來遍歷 fields 陣列,並逐一刪除 shallowCopy 中對應的欄位。最後,它返回經過處理後的 shallowCopy 物件。

這個函數的一個缺點是它只能刪除物件的頂層欄位,不能刪除巢狀欄位。要刪除巢狀欄位,可以使用遞回來實現。

型別宣告

檢視index.d.ts,這個是Omit的型別宣告檔案,用於告訴 TypeScript 編譯器如何型別檢查該模組的程式碼。

declare function Omit<T, K extends keyof T>(
  obj: T,
  keys: Array<K>
): Omit<T, K>;
export default Omit;

這段程式碼定義了一個泛型函數 Omit,它接受一個物件 obj 和一個鍵名陣列 keys,返回一個新的物件,該物件包含了原物件中除了 keys 陣列中的鍵以外的所有鍵值對。例如,呼叫 Omit({a: 1, b: 2, c: 3}, ['b']) 將會返回一個新的物件 {a: 1, c: 3}

偵錯程式碼

在vscode的側邊欄的偵錯項中建立一個lunch.json ,並將program選項修改為我們要偵錯的檔案。開啟檔案,在某行的最前邊打上斷點,執行debugger,如圖:

可以看到執行到斷點處,檔案中變數的當時的值都很方便的檢視到。上邊工具列可以點選下一步,進行一步步偵錯。

總結

學習在 Github Codespaces 中偵錯 Node.js 程式,型別宣告檔案的編寫,以及複習了偵錯程式碼的過程。

以上就是JavaScript庫omit原始碼解析的詳細內容,更多關於JavaScript omit庫的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com