🐕

TypeChallengesに入門する

2023/04/30に公開
myAwaited.ts
type MyAwaited<T> = any
myanswer.ts
type MyAwaited<T extends PromiseLike<unknown>> = T extends PromiseLike<infer R> ? R : never

これだとPromiseがネストしている時にエラーが出てしまいます。
なので、Promiseを完全に紐解く(?)ために再起的に扱ってあげればいいみたいです。

myanswer.ts
type MyAwaited<T> = T extends PromiseLike<infer R> ? MyAwaited<R> : T

extends PromiseLike<unknown>はTがこれを満たすことができなくなってしまうので外します。

Discussion