"Awaited unwraps Promises. NonNullable strips null and undefined. Two tiny utilities you'll use weekly."
Awaited<T> — recursively unwrap Promises
Awaited<Promise<string>> is string. Awaited<Promise<Promise<number>>> is also number — Awaited recurses until the value isn't a Promise anymore. This matches JavaScript's runtime: await Promise.resolve(Promise.resolve(x)) resolves to x, not Promise<x>.
Awaited was added in TypeScript 4.5 specifically because the older Promise<T> model couldn't accurately handle nested Promises. Anywhere you'd write ReturnType<typeof asyncFn>, you probably want to wrap it in Awaited to get the actually-resolved type.
NonNullable<T> — strip null and undefined
NonNullable<string | null | undefined> is string. The utility uses distribution over the union and removes any member that's null or undefined. Useful when you have a possibly-nullable type and want to assert (after a check) that it's now safe.