TypeScript中如何获取当前所在匿名函数的返回类型?
在TypeScript中便捷获取当前函数返回类型的方法
目前TypeScript没有原生语法直接引用当前所在函数的返回类型,但可以通过以下技巧实现你的需求——既显式指定函数返回类型,又避免重复类型定义或单独声明type:
1. 顶级函数表达式
先为变量显式指定完整的函数类型,再在函数体内通过ReturnType<typeof 变量名>获取返回类型:
// 显式指定fn的函数类型 const fn: () => { id: number; name: string; age: number }[] = () => { // 直接复用返回类型,无需重复复杂定义 const result: ReturnType<typeof fn> = []; result.push({ id: 1, name: "Alice", age: 28 }); return result; };
2. 对象内部的函数
通过ReturnType<typeof 容器对象.函数名>在函数体内引用返回类型:
const dataUtils = { // 显式指定函数返回类型 getFilteredItems: function(): { value: string; timestamp: number }[] { const result: ReturnType<typeof dataUtils.getFilteredItems> = []; // 业务逻辑处理 result.push({ value: "test", timestamp: Date.now() }); return result; } };
3. 类成员函数
利用this引用当前类实例,结合ReturnType<typeof this.函数名>获取返回类型:
class DataService { // 显式指定返回类型 fetchRecords(): { id: string; content: string }[] { const result: ReturnType<typeof this.fetchRecords> = []; // 模拟数据获取逻辑 result.push({ id: "rec-001", content: "sample content" }); return result; } }
这些方法既满足了显式指定函数类型的要求,又无需重复编写复杂类型或额外声明type,同时适配匿名函数、对象/类内部函数等场景。
内容的提问来源于stack exchange,提问作者zacaj
相关产品推荐
相关产品推荐

