typescript - 如何纠正被推断为未知的咖喱函数的函数参数的参数的类型推断?
问题描述
当使用单独接受函数和列表unknown
的柯里化函数时,如果柯里化的顺序是接受一个函数作为第一个参数,那么如何从列表中正确推断出函数参数的参数(避免推断为)然后接受一个列表作为第二个参数范围?- 这可能吗?如果没有,这里提供一个好的函数 API 以改善开发人员体验的最佳方法是什么?
例如,在下面的代码片段中,一个selector
函数作为第一个参数传递给第一个柯里化函数,它的参数i
应该提供为第二个柯里化函数的T
第二个参数提供类型推断的类型。numbers
但是,select
的i
参数被推断为类型unknown
- 为什么会这样?
如何更改示例以使i
's &list
的推断类型两者兼而有之Item
?
const select = <T>(selector: (i: T) => T) => (numbers: T[]) => numbers.map(selector);
interface Item { name: string; }
const items: Item[] = [{ name: 'name1' }, { name: 'name2' }];
// ERROR: Property 'name' does not exist on type 'unknown' (`i` is type `unknown`, `items` is type `Item[]`).
select(i => i.name)(items);
解决方案
推荐阅读
- android - Arping 命令总是返回退出值 2。如何解决这个问题?
- android - 为什么 fragment_container 控件在 Android Studio 中会填满整个屏幕?
- javascript - 未捕获的 ReferenceError:未定义要求?
- javascript - 如果JS中的干净方式如何检查变量是否等于两个值之一
- git - 项目重装后列出本地分支
- chart.js - Chartjs 带范围的折线图
- java - PKIX 路径构建失败:我无法修复它请为我们提供一些解决方案
- openssl - 带有 EVP API 的 RSA
- c# - 使用checkedlistbox从Datagridview中选择数据
- ios - 在 iPhone X 和更早版本中无法返回到以前的视图控制器