算法
- 了解二叉搜索树的特性
- 通过递归遍历,判断是否符合二叉搜索树的特性
TypeScript
Awaited 返回Promise包裹的类型
// ============= Test Cases =============
import type { Equal, Expect } from './test-utils'
type X = Promise<string>
type Y = Promise<{ field: number }>
type Z = Promise<Promise<string | number>>
type cases = [
Expect<Equal<MyAwaited<X>, string>>,
Expect<Equal<MyAwaited<Y>, { field: number }>>,
Expect<Equal<MyAwaited<Z>, string | number>>,
]
// @ts-expect-error
type error = MyAwaited<number>
// ============= Your Code Here =============
// 重点是infer:在条件语句中推断新的类型,用于解包;然后考虑边界需要一个递归
type MyAwaited<T> = T extends Promise<infer U>
? U extends Promise<any>
? MyAwaited<U>
: U
: error