获取 TypeScript 中函数的返回类型

在 TypeScript 中获取函数的返回类型

Get the return Type of a Function in TypeScript

使用ReturnType实用程序类型获取 TypeScript 中函数的返回类型,例如type T = ReturnType<typeof myFunction>. 实用程序类型构造一个类型,该ReturnType
类型由提供的函数类型的返回类型组成。

索引.ts
function sum(a: number, b: number): number { return a + b; } // 👇️ type SumReturnType = number type SumReturnType = ReturnType<typeof sum>; // ✅ From a function's type type AFunctionType = (a: number, b: string) => string; // 👇️ type AFunctionReturnType = string type AFunctionReturnType = ReturnType<AFunctionType>;

我们使用
ReturnType
实用程序类型来获取函数的返回类型。

请注意,当尝试从函数声明中获取函数的返回类型时,您必须使用
typeof
运算符。

索引.ts
function sum(a: number, b: number): number { return a + b; } // 👇️ type SumReturnType = number type SumReturnType = ReturnType<typeof sum>;

这是因为ReturnType接受类型而不是函数。

另一方面,如果您需要从函数的类型中获取返回类型,请将其直接传递给ReturnType.

索引.ts
// ✅ From a function's type type AFunctionType = (a: number, b: string) => string; // 👇️ type AFunctionReturnType = string type AFunctionReturnType = ReturnType<AFunctionType>;

请注意,我们没有使用typeof运算符,因为我们将类型传递给ReturnType实用程序类型。

如果您正在使用的函数没有返回值,则其返回类型将为void.

索引.ts
function myFunction(a: number, b: number): void { console.log(a); console.log(b); } // 👇️ type T = void type T = ReturnType<typeof myFunction>;

如果函数可能返回多种类型的值,则其返回类型将是
联合类型

索引.ts
function myFunction(a: number, b: number): string | number { return Math.random() > 0.5 ? a + b : 'hello world'; } // 👇️ type T = string | number type T = ReturnType<typeof myFunction>;

如果函数抛出错误,其返回类型将为never.

索引.ts
function myFunction(): never { throw new Error('Something went wrong'); } // 👇️ type T = never type T = ReturnType<typeof myFunction>;