- Pick
type MyPick<T, K extends keyof T> = {
[U in K]: T[U];
}- Readonly
type MyReadonly<T> = {
readonly [U in keyof T]: T[U];
}- First of Array
type First<T extends any[]> = T['length'] extends 0 ? never : T[0]; Perhaps you don't know you can get 'length' of an array type.
- Lengh of Tuple
type Length<T extends readonly unknown[]> = T['length'];- Contact
type Concat<T extends unknown[], U extends unknown[]> = [...T, ...U];