zjxxxxxxxxx
zjxxxxxxxxx
```ts type Jsonified = T extends Date ? string : T extends MyClass ? "MyClass" : T extends () => void ? never : T extends object ? { [K...
```ts type Unpacked = T extends Promise ? Unpacked : T extends () => void ? ReturnType : T extends unknown[] ? T[number] : T; ```
```ts type StartsWith = T extends `${U}${infer R}` ? true : false; type EndsWith = T extends `${infer F}${U}` ? true : false; ```
```ts type NaiveFlat = T extends [infer F, ...infer R] ? (F extends unknown[] ? NaiveFlat : F) | NaiveFlat : T extends [] ? never : T; ```
> 一个月能告诉我一下,这里的 [number] 是什么用的吗?完全找不到文档呀 [number] 用来代指所有数组下标,不管下标 0 还是下标 1,它们都是 number 型。 [''a,'b'][number] === ['a','b'][0|1] === 'a'|'b'
```ts type Flat = T extends [infer F, ...infer R] ? F extends any[] ? [...Flat, ...Flat] : [F, ...Flat] : T; ```