Preview:```ts
...
type _Narrow<T, U> = [U] extends [T]
? U
: Extract<T, U>
export type Narrow<T = unknown> =
| _Narrow<T, 0 | (number & {})>
| _Narrow<T, 0n | (bigint & {})>
| _Narrow<T, "" | (string & {})>
| _Narrow<T, boolean>
| _Narrow<T, symbol>
| (T extends object
? {[K in keyof T]: Narrow<T[K]>}
: never)
...```