Type Challenges Judge

Awaited

提出詳細

type PromiseLike<T> = Promise<T> | { then: (onfulfilled: (arg: T) => unknown) => unknown } type MyAwaited<T extends PromiseLike<unknown>> = T extends PromiseLike<infer U> ? U extends PromiseLike<unknown> ? MyAwaited<U> : U : never
提出日時2023-08-07 17:05:09
問題Awaited
ユーザーookkoouu
ステータスAccepted
テストケース
import type { Equal, Expect } from '@type-challenges/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>