mazhy
mazhy
```ts type Reverse = T extends [infer F, ...infer Rest] ? [...Reverse, F] : []; ```
```ts type Shift = T extends [infer F, ...infer Rest] ? Rest : never; ```
```ts type OmitByType = { [k in keyof T as T[k] extends U ? never : k]:T[k] } ```
```ts type Mutable = T extends Record ? { -readonly [k in keyof T]: T[k] } : T extends [] ? T : never ```
```ts type Merge = { [K in keyof Obj]:Obj[K] } type PartialByKeys = Merge ```
```ts type EndsWith = T extends `${infer Rest}${U}` ? true : false; ```
```ts type StartsWith = T extends `${U}${infer Rest}` ? true : false ```
```ts type PickByType = { [K in keyof T as T[K] extends U ? K : never] : T[K] } ```
```ts // 目前还没有想到如果解决递归层数过多导致创建数组失败的问题 type MinusOne = Arr['length'] extends T ? Arr extends [infer F, ...infer Rest] ? Rest['length'] : never : MinusOne```
```ts type DropChar = S extends `${infer F}${infer Rest}` ? `${F extends C ? '' : F}${DropChar}` : S ```