import type { ReturnType } from "../ReturnType.ts";import { assert } from "../assert.ts";import type { Equals } from "../Equals.ts";
{ const getStringAsync: () => Promise<string> = null as any;
type Got = ReturnType<typeof getStringAsync>; type Expected = string;
assert<Equals<Got, Expected>>();}
{ const getString = (): string => { return null as any; };
type Got = ReturnType<typeof getString>; type Expected = string;
assert<Equals<Got, Expected>>();}
{ const getString: () => PromiseLike<string> = null as any;
type Got = ReturnType<typeof getString>; type Expected = string;
assert<Equals<Got, Expected>>();}
{ const getString: () => PromiseLike<string> | number = null as any;
type Got = ReturnType<typeof getString>; type Expected = string | number;
assert<Equals<Got, Expected>>();}
{ type Got = ReturnType<number>;}
{ type Got = ReturnType<Promise<void>>;}
{ const getString: (() => PromiseLike<string>) | undefined = null as any;
type Got = ReturnType<typeof getString>; type Expected = string;
assert<Equals<Got, Expected>>();}
{ const getString: (() => PromiseLike<string>) | null = null as any;
type Got = ReturnType<typeof getString>; type Expected = string;
assert<Equals<Got, Expected>>();}