簡體   English   中英

獲取 TypeScript 中數組子集的類型

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

我可以在其中傳入具有此形狀和conditiontype ,並為與條件匹配的條目獲取值的聯合類型。

如果有幫助,我還可以將數據結構更改為 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.

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