webshrine / stdtyp/src / ValuesType
Type Alias: ValuesType<T>
ValuesType<
T
>:T
extendsReadonlyArray
<any
> ?T
[number
] :T
extendsArrayLike
<any
> ?T
[number
] :T
extendsobject
?T
[keyofT
] :never
ValuesType
Type Parameters
• T extends ReadonlyArray
<any
> | ArrayLike
<any
> | Record
<any
, any
>
Desc
Get the union type of all the values in an object, array or array-like type T
Example
ts
type Props = { name: string; age: number; visible: boolean };
// Expect: string | number | boolean
type PropsValues = ValuesType<Props>;
type NumberArray = number[];
// Expect: number
type NumberItems = ValuesType<NumberArray>;
type ReadonlySymbolArray = readonly symbol[];
// Expect: symbol
type SymbolItems = ValuesType<ReadonlySymbolArray>;
type NumberTuple = [1, 2];
// Expect: 1 | 2
type NumberUnion = ValuesType<NumberTuple>;
type ReadonlyNumberTuple = readonly [1, 2];
// Expect: 1 | 2
type AnotherNumberUnion = ValuesType<NumberTuple>;
type BinaryArray = Uint8Array;
// Expect: number
type BinaryItems = ValuesType<BinaryArray>;
Defined in
node_modules/.pnpm/utility-types@3.11.0/node_modules/utility-types/dist/mapped-types.d.ts:480