」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何以字串陣列的形式檢索 TypeScript 介面的鍵?

如何以字串陣列的形式檢索 TypeScript 介面的鍵?

發佈於2024-11-16
瀏覽:105

How to Retrieve the Keys of a TypeScript Interface as an Array of Strings?

以字串陣列的形式存取 Typescript 介面的按鍵

簡介

在 Typescript 中處理表格資料需要使用介面來定義列結構。為了有效地操作這些結構,通常需要以字串陣列的形式檢索這些介面的屬性名稱。

解決方案

使用自訂轉換器

自 Typescript 版本 2.4 起,自訂轉換器提供了一種從介面中提取金鑰的機制。考慮以下介面:

interface IMyTable {
  id: number;
  title: string;
  createdAt: Date;
  isDeleted: boolean;
}

以陣列形式取得屬性名稱:

import { keys } from 'ts-transformer-keys';

const IMyTable = keys();

console.log(IMyTable); // ["id", "title", "createdAt", "isDeleted"]

自訂轉換器的限制

雖然自訂轉換器提供了方便的解決方案,但它們需要使用Typescript轉換API 而不是ts 指令。這種限制可能會妨礙它們的可用性。

替代方案

在自訂變壓器不可行的情況下,替代選項包括:

  • 使用反射技術(不建議提高性能)原因)
  • 明確指定屬性名稱陣列(容易出現人為錯誤和維護開銷)
最新教學 更多>
  • 如何解決MySQL中的「1418 (HY000) This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its statements and binarylogging isenabled\」錯誤?
    如何解決MySQL中的「1418 (HY000) This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its statements and binarylogging isenabled\」錯誤?
    匯入MySQL資料庫時,可能會遇到錯誤「1418 (HY000) at line 10185: This function has none of DETERMINISTIC, NO SQL, 或 READS SQL DATA in its statements and二進位日誌記錄已啟用(您可能想...
    程式設計 發佈於2024-11-16
  • 如何在 MySQL 中以特定格式(如“d-m-Y”)顯示日期?
    如何在 MySQL 中以特定格式(如“d-m-Y”)顯示日期?
    MySQL 日期格式和表示方法在MySQL 中建立DATE 欄位時,使用者可能會遇到日期儲存在非使用者中的問題- 友善的格式,如0000-00-00。本文討論了將此格式變更為「d-m-Y」或任何其他首選顯示格式的可能性。 MySQL 的內部日期儲存MySQL 在內部將日期儲存為三-按照特定公式打包的...
    程式設計 發佈於2024-11-16
  • 為什麼我的 PyQt4 按鈕點擊訊號在循環內總是輸出相同的值?
    為什麼我的 PyQt4 按鈕點擊訊號在循環內總是輸出相同的值?
    在循環中連接 PyQt4 中的槽和訊號在 PyQt4 中,在槽和訊號之間建立連接是事件處理的基本面向。但是,當嘗試連接循環內按鈕發出的多個訊號時,可能會出現意外行為。 為了說明此問題,請考慮以下程式碼:def __init__(self): for i in range(0, 10): ...
    程式設計 發佈於2024-11-16
  • 如何在整個 MySQL 資料庫中執行全域查找和替換?
    如何在整個 MySQL 資料庫中執行全域查找和替換?
    尋找並取代整個 MySQL 資料庫目標是在整個 MySQL 資料庫中執行全域尋找和取代操作。這個問題建議更改以下語法:update [table_name] set [field_name] = replace([field_name],'[string_to_find]','[string_to_...
    程式設計 發佈於2024-11-16
  • 如何在 C++ 中將字串轉換為雙精度數:使用 `std::istringstream` 和 `std::stod` 的簡單指南
    如何在 C++ 中將字串轉換為雙精度數:使用 `std::istringstream` 和 `std::stod` 的簡單指南
    在C 中將字串轉換為雙精度型在C 中,可以使用std::istringstream 和std::stod 函數將字串轉換為雙精度型。 #include <sstream> double string_to_double(const std::string& s) { std:...
    程式設計 發佈於2024-11-16
  • 如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    在 PHP 中組合關聯數組在 PHP 中,將兩個關聯數組組合成一個數組是常見任務。考慮以下請求:問題描述:提供的代碼定義了兩個關聯數組,$array1和$array2。目標是建立一個新陣列 $array3,它合併兩個陣列中的所有鍵值對。 此外,提供的陣列具有唯一的 ID,而名稱可能重疊。要求是建構一...
    程式設計 發佈於2024-11-16
  • 大批
    大批
    方法是可以在物件上呼叫的 fns 數組是對象,因此它們在 JS 中也有方法。 slice(begin):將陣列的一部分提取到新數組中,而不改變原始數組。 let arr = ['a','b','c','d','e']; // Usecase: Extract till index ...
    程式設計 發佈於2024-11-16
  • 為什麼 Lambda 比 C++ 中的普通函數更可優化?
    為什麼 Lambda 比 C++ 中的普通函數更可優化?
    與普通函數相比,為什麼Lambda 允許增強編譯器優化Nicolai Josuttis 的C 標準庫(第二版)斷言lambda可以與普通函數相比,編譯器可以更有效地最佳化。這項優勢源自於 lambda 作為函數物件的本質。 當 lambda 傳遞給函數模板時,它會被實例化為專門針對該物件定制的新函數...
    程式設計 發佈於2024-11-16
  • Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta:列偏移的刪除和恢復Bootstrap 4 在其Beta 1 版本中引入了重大更改柱子偏移了。然而,隨著 Beta 2 的後續發布,這些變化已經逆轉。 從 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    程式設計 發佈於2024-11-16
  • 如何有效地從 JavaScript 中的物件陣列中刪除屬性?
    如何有效地從 JavaScript 中的物件陣列中刪除屬性?
    從物件陣列中有效刪除屬性處理包含多個物件的陣列時,需要從每個物件中刪除特定屬性。雖然使用 for 迴圈的簡單方法就足夠了,但探索利用 ES6 功能和原型操作的替代方法可以帶來更有效率的實作。 ES6 物件解構One這種技術就是 ES6 中引入的物件解構。它可以從物件中提取特定屬性並進一步分配給新變數...
    程式設計 發佈於2024-11-16
  • Nonce 如何保護 Web 要求免受重播攻擊?
    Nonce 如何保護 Web 要求免受重播攻擊?
    如何使用Nonces 保護Web 請求問題用戶找到了利用網站評分系統的請求驗證系統的方法:複製高價值的HTTP 請求。這會損害系統的完整性和可靠性。 解決方案:實現 Nonce 系統Nonce(使用一次的數字)是透過確保特定請求不被執行來防止請求重播攻擊的值。之前做的。這是實現隨機數係統的常見且安全...
    程式設計 發佈於2024-11-16
  • 在 Go 中使用 WebSocket 進行即時通信
    在 Go 中使用 WebSocket 進行即時通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要一种比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSoc...
    程式設計 發佈於2024-11-16
  • 如何有效控制JVM記憶體消耗?
    如何有效控制JVM記憶體消耗?
    控制JVM 記憶體消耗為了分配適當的資源以獲得最佳應用程式效能,設定JVM 的最大記憶體至關重要JVM (Java虛擬機器)可以利用。這不僅包括堆內存,還包括正在運行的進程的整個內存消耗。 為了實現這一點,JVM 提供了兩個關鍵的命令列參數:- Xms:: 此參數指定啟動時分配給JVM 的最小記憶體...
    程式設計 發佈於2024-11-16
  • 互動式角鬥士戰鬥模擬|角鬥士之戰.com
    互動式角鬥士戰鬥模擬|角鬥士之戰.com
    透過這個互動式角鬥士戰鬥模擬進入競技場!控制兩個強大的角鬥士,每個角鬥士都有獨特的動作,如攻擊、防禦和閃避,並配有動態動畫和即時戰鬥日誌。這款模擬由 GladiatorsBattle.com 提供支持,非常適合古羅馬和戰術遊戲的粉絲。加入戰鬥,體驗鬥獸場的快感! ...
    程式設計 發佈於2024-11-16
  • 如何正確設定Java URLConnection中的User-Agent?
    如何正確設定Java URLConnection中的User-Agent?
    設定Java URLConnection 的使用者代理程式嘗試使用Java 和URLConnection 解析網頁並將使用者代理設定為指定的值時,可以在末尾附加一個額外的“Java/1.5.0_19”。這是由於舊版 Java 的限制所致。 解決方案(Java 1.6.30 及更高版本)在 Java ...
    程式設計 發佈於2024-11-16

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3