typescript - 将函数的返回类型推断为打字稿中的参数
问题描述
我有一个getData
需要可选参数的函数:用于转换数据的函数。在getData
函数内部,我以某种方式获得了原始数据(细节并不重要)。
我希望 TypescriptgetData
根据传递给的转换函数的类型正确推断返回类型getData
function request<T>():T {
return "12" as unknown as T
}
function getData<Input>(transform?: undefined): Input
function getData<Input, Output>(transform: (data: Input) => Output): Output
function getData<Input, Output>(transform?: (data: Input) => Output) {
const data = request<Input>()
if (transform) {
return transform(data)
}
return data
}
const outputAsString = getData<string>()
const outputAsNumber = getData<string, number>(data => data.length)
此代码有效。我想避免的是在第二个示例中传递第二个泛型,因为我认为它可以从转换函数返回类型中推断出来。但是,当我这样做时:
const outputAsNumber = getData<string>(data => data.length)
我得到明确any
的数据和Argument of type '(data: any) => any' is not assignable to parameter of type 'undefined'.
解决方案
推荐阅读
- amazon-web-services - 如何使用 cloudformation 管理不同的环境
- .net-core - Razor 组件:我可以在主布局中创建多个(上游渲染)部分吗?
- python - Flask 在标准输出被重定向时禁用标准输出
- angular - subscribe 方法中的三个回调函数如何作为一个对象接收?
- r - 如何在R中合并原子向量的元素?
- node.js - Path.replace 不是 NPM SCSS AUTOPREFIXER 构建过程的函数
- r - 跳过迭代并在R中的嵌套for循环中返回NA
- fiware - IoT-AgentUL 如何获取数据
- python - 在终端中打印熊猫数据框时,可以很好地控制显示的行数和列数
- python - 通过验证模式将 XML 转换为 Python 中的 JSON