[英]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.