Disclosure

Most of the problems under my TypeHero Challenges folder were either obtained from typehero.dev or from type-challenges repo. Purpose of these articles are just to document my approaches for my easy reference. Please visit the respective links for more info.

Link to original

Problem Description

If we have a type which is a wrapped type like Promise, how we can get the type which is inside the wrapped type?

For example: if we have Promise<ExampleType> how to get ExampleType?

type ExampleType = Promise<string>
 
type Result = MyAwaited<ExampleType> // string

Solutions

Approach 1: infer

type MyAwaited<T extends PromiseLike<any>> = T extends PromiseLike<infer Wrapped>
	? Wrapped extends PromiseLike<any>
		? MyAwaited<Wrapped>
		: Wrapped
	: never;