簡體   English   中英

接口屬性屬於不同接口屬性的類型

[英]Interface property be of the type of a different interface property

所以我試圖在一個表的實例中協調兩個單獨的接口,一個表我想使過濾可選,所以我開始使用兩個接口(省略了其余的實現)。 一個用於保存有關列的數據,另一個用於保存過濾數據

interface Column {
  headerTitle: string;
  headerId: string;
}

interface Filter {
  filteredHeaderIds: string []; // I would like this to be of type of headerId
  noDataMessage: string;
}

在上面的實現中,我希望filterHeaderIds綁定到用戶實現的任何Column作為Column的一部分。
例:

const columns: Column[] = [{
  headerTitle: 'Person Name',
  headerId: 'name',
}, {
  headerTitle: 'Person Age',
  headerId: 'age',
}];

const filterData: Filter = {
  filteredHeaderIds: ['name','throwError'], 
  noDataMessage: 'No Data Found',
}

由於throwError不是已定義的headerId我想看看是否有可能讓typescript拋出錯誤。 這樣的事情可能嗎?

謝謝!

我能想到的最接近的是字符串文字類型 如果您說您的列定義將是已編譯代碼的一部分,那么這只是一個有效的解決方案:

type ColumnHeaderId = 'name' | 'age';

interface Column {
  headerTitle: string;
  headerId: ColumnHeaderId;
}

interface Filter {
  filteredHeaderIds: ColumnHeaderId[];
  noDataMessage: string;
}

但是,如果您希望完全動態生成列,我認為您將無法實現ID字段匹配的運行時邏輯檢查。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM