interface ReturnNotUndefined { (...args: any): Promise<NonNullable<unknown>> | NonNullable<unknown> } const a = (() => 42) satisfies ReturnNotUndefined; const b = (() => null) satisfies ReturnNotUndefined; // エラーになる、嬉しい const c = (async () => null) satisfies ReturnNotUndefined; // エラーにならない、嬉しくない
こういうnon nullなTを返すsyncまたはasync関数を定義したいときに、うまく区別できなかったりとかPromise<null>
がNonNullable<unknown>
なせい)