TypeScript Type Challenges Medium_配列操作系
Tuple to Union
code:typescript
type TupleToUnion<T extends any[]> = Tnumber Last of Array
code:typescript
// 解2
Pop
code:typescript
Shift
Popとほぼ同じ
Reverse
Chunk
Fill
wintyo.icon 範囲指定が難しい
Without
omitのタプル版
Flatten
ネストされた配列を全部無くす
wintyo.icon 再帰で多分なんとかなる
Flatten Depth
flattenに階層を指定する
/icons/hr.icon
タプルから特定のフィールドをpickする
code:typescript
type TabItem = {
value: string;
label: string;
}
const TAB_ITEMS = [
{ value: 'tab1', label: 'タブ1' },
{ value: 'tab2', label: 'タブ2' },
{ value: 'tab3', label: 'タブ3' },
] as const satisfies TabItem[];
type PickTabValues<Arr extends readonly TabItem[]> =
Arr extends readonly [infer Item extends TabItem, ...infer Rest extends TabItem[]]
? [Item'value', ...PickTabValues<Rest>] : []
const pickTabValues = <Arr extends readonly TabItem[]>(tabItems: Arr): PickTabValues<Arr> => {
return tabItems.map((tabItem) => tabItem.value) as PickTabValues<Arr>
}
const tabValues = pickTabValues(TAB_ITEMS)