[英]Getting the Type of a Subset of an Array in TypeScript
我有一個包含一些設置數據的數據結構(它可以是數組或對象)。 它目前看起來像這樣:
const settings = [
{name: 'Albert', value: 'a', isDefault: true},
{name: 'Bradley', value: 'b'}
] as const
和類型
type TAllValues = settings[number]['value'] // is 'a' | 'b' <-- that Union Type is what I want
我希望做的是能夠根據設置中的匹配條件過濾此列表以獲取子集。 像這樣的東西
type TDefaultValues = FilterSettings<settings, {isDefault: true}> // would be just 'a'
我可以在其中傳入具有此形狀和condition
的type
,並為與條件匹配的條目獲取值的聯合類型。
如果有幫助,我還可以將數據結構更改為 object:
const settings = {
a: {name: 'Albert', isDefault: true},
b: {name: 'Bradley'}
}
您可以使用分布式條件類型來檢查設置是否符合條件,並且 select 僅適用於那些:
const settings = [
{ name: 'Albert', value: 'a', isDefault: true },
{ name: 'Bradley', value: 'b' }
] as const
type Setting = typeof settings[number]
type FilterSettings<Condition, S extends Setting = Setting> =
S extends Condition ? S["value"] : never
type TDefaultValues = FilterSettings<{ isDefault: true }> // "a"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.