🐕
TypeChallengesに入門する
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