"Awaited 가 Promise unwrap. NonNullable 이 null 과 undefined strip. 주마다 쓸 작은 utility 2개."
`Awaited` — 재귀적으로 Promise unwrap
Awaited<Promise<string>> 가 `string`. Awaited<Promise<Promise<number>>> 도 `number` — Awaited 가 값이 더 이상 Promise 아닐 때까지 recurse. JavaScript runtime 과 match: `await Promise.resolve(Promise.resolve(x))` 가 `Promise
Awaited 가 TypeScript 4.5 에 정확히 옛 `Promise
`NonNullable` — null 과 undefined strip
NonNullable<string | null | undefined> 가 `string`. Utility 가 union 에 distribution 써서 null 이나 undefined 인 어떤 멤버든 제거. 가능 nullable 타입 있고 (체크 후) 안전하다 주장하고 싶을 때 유용.
Awaited 와 NonNullable 이 외과적 타입 stripper. 한 번에 한 wrapper 풀어 — 첫째 Promise, 둘째 null/undefined. ReturnType 과 compose 해서 함수 참조에서 정확한 타입 빌드.