如何強制打字稿檢查對像中的所有鍵是否都存在於數組中,其中所述鍵用作值?

魯道夫·施密茨

有沒有什麼簡單的方法可以確保一個對象的所有鍵都存在於另一個對象屬性上?

例如:

export interface Field<T> {
  formKey: Extract<keyof T, string>;
  label: string;
  text: string;
}

export interface FormProps<T> {
  initState: T;
  fields: Field<T>[];
  title: string;
}


const initState = {
 name: 'whatever',
 description: 'whocares'
}

Typescript 是否可以檢查 forfieldsinitState存在的所有鍵,是否存在於該對像數組中,這些鍵被分配給了formKey

所以如果你通過了:

const mockExposureProps: FormProps<FormInfo.Exposure> = {
  fields: [
    {
      formKey: "description",
      label: "mock-label",
      text: "mock-text",
    },
  ],
  initState: {
    description: "mock-desc",
    name: "mock-name",
  },
  title: "cool title",
};

打字稿將讓你知道,你也沒通過,有一個物體formKeyname

編輯:

我能得到的最接近的是這個:

export interface Field<T> {
  formKey: Pick<T, keyof T>; // Change occurred here
  label: string;
  text: string;
}

但隨後我的數據結構需要更改為:

const mockExposureProps: FormProps<FormInfo.Exposure> = {
  fields: [
    {
      formKey: { // Change occurred here
        description: 'mock-desc',
      }
    },
      label: "mock-label",
      text: "mock-text",
    },
  ],
  initState: {
    description: "mock-desc",
    name: "mock-name",
  },
  title: "cool title",
};
澤庫里亞

雖然可以通過使用輔助函數以非常全面的方式強制執行它,如下所示:確保數組具有聯合中的所有類型

我認為這在 react 的上下文中並不會真正起作用並在組件中使用它。相反,我建議將類型定義更改為:

export interface Field {
  label: string;
  text: string;
}

export interface FormProps<T> {
  initState: T;
  fields: Record<keyof T, Field>;
  title: string;
}

通過這種方式,您可以輕鬆地強制 initState 中存在的每個鍵也必須存在於字段中。

操場

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

檢查對像在 Typescript 中是否有鍵並使用該鍵

打字稿:如何為對像類型的鍵值對定義接口

PHP 檢查數組鍵是否等於特定的字符串值

如何使用cypress檢查對像數組中的值是否等於某個值?

如何將鍵投影到數組中以生成對像數組?

PHP檢查不同數組中的某些值是否對所有人都相同

根據 TypeScript 對像數組中的值查找鍵

Pandas-對於數據框中的每一行,檢查excel文件中是否存在值

如何正確檢查mongoose的對像數組中是否有兩個模型值

如何檢查包含另一個對像數組的對像數組是否具有屬性

鍵入對像中的鍵,其中該鍵的值滿足約束

如何更改嵌套對像數組中的所有鍵名javascript

如何在對像數組中獲取具有唯一值的鍵?(JavaScript)

JavaScript 查找:如果對象鍵存在於另一個對像數組中,則更新數組中對象的值,類似於 excel 中的 v-lookup

計算字典列表中鍵值大於 1 的對像數

如何從對像數組中獲取特定鍵值的總和

如何使用新鍵值映射新數組中的對像數組

檢查值在 PHP 中的對像數組中

打字稿:通用函數,僅從對像數組的特定鍵中提取定義的值

如何對可以有多個新生成的鍵的對像數組中的等效鍵的值求和?

如何使用打字稿中的自定義鍵將數組轉換為對像數組?

如何在react js打字稿中過濾對像數組中的數據

打字稿從鍵中獲取對象值

檢查一個數字是否已經存在於具有用戶引入的值的數組中

如何在 MongoDB 中推入具有精確鍵值的對象嵌套數組?

如何在 Javascript 中更新嵌套對像數組中的鍵/值對

在 JavaScript 中通過鍵和嵌套值過濾對像數組

檢查嵌套數組中是否存在值

如何驗證包含可選對象鍵的數組,必須在空手道中檢查所需鍵本身?