3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

TypeScript 4.5で入ったAwaitedは自作できるのか

Last updated at Posted at 2021-12-13

TypeScript 4.5でAwaitedタイプが入りました。

// A = string
type A = Awaited<Promise<string>>;

// B = number
type B = Awaited<Promise<Promise<number>>>;

// C = boolean | number
type C = Awaited<boolean | Promise<number>>;

あれ、これって自作できそうな気もします。

type MyAwaited<T> = T extends Promise<infer R> ? MyAwaited<R> : T

これだけでいいのでは?

TypeScript Playgroundで確認、いい感じ。

実際のコードを覗いてみることにしました。

PromiseLikeと非strictNullChecksに対応している以外は基本同じ様子。もっと魔法のようなことをやっているかと思ってました。

これならdownlevel-dtsでも対応できるのではないでしょうか(最近アクティブじゃなさそう)。

以上、小ネタでした。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?