typescript - 是否可以将函数的返回类型用作变量的类型?
问题描述
假设我有这个功能:
let getData = () => {
return {
name: 'John',
age: 2,
isAsian: true
}
}
我如何说(如果可能的话)变量的类型是 的返回类型getData
,而不影响它getData
?
例如,我正在寻找类似的东西:
var data: getData
当然这不起作用,因为类型是函数而不是函数的返回值。(编辑:实际上它只会给出错误Cannot find name 'getData'
:)
var data = getData()
会工作; 的类型data
将被推断为{name: string, age: number, isAsian: boolean}
,但这对我来说不是解决方案。
这里有一个讨论可能与我的问题有关:获取函数的返回类型
但是,这似乎不是我正在寻找的解决方案。首先,我还不能使用 Typescript 2.8(我正在使用 Angular,CLI 不允许我使用)。我认为替代方案,就像这个 SO 问题的主要解决方案对我没有用,因为我希望动态使用我的函数的返回类型。
解决方案
从 TypeScript 2.9(对不起)开始,您可以使用以下ReturnType
类型:
let getData = () => {
return {
name: 'John',
age: 2,
isAsian: true
}
}
let p: ReturnType<typeof getData>;
p.name; // string
在 2.9 之前您可以使用一些变通方法,但它们不是很好。一种方法是:
let fake = (false as any) && getData();
let p: typeof fake;
推荐阅读
- javascript - 当我添加 for() 函数时,其他函数在 JS 中不做任何事情
- swift - 是否可以使用 swiftUI 在 watchOS 上隐藏 Digital Crown 指示器
- javascript - 我安装了错误的 NPM 包。我应该担心吗?
- mysql - 将 utf8mb4 转换为 latin1 时如何克服性能问题?
- reactjs - 为什么我的图表仍然显示 y 轴刻度的小数?
- python - Django:从基于类的视图中的函数保存模型实例不起作用
- c - 在我的递归函数中一遍又一遍地初始化我的变量
- r - 如何在 R 中合并来自多个 Excel 工作簿的多个工作表?
- sql - 为不同的值集过滤列
- javascript - React 渲染得到一个警告需要一个独特的“关键”道具