typescript - 打字稿,在“{}”类型上找不到带有“字符串”类型参数的索引签名
问题描述
我有这个功能:
const fieldsOrder = [
'boo',
];
fieldsOrder.reduce((sortedRequest, key) => {
if (key in request)
sortedRequest[key] = request[key]; // Here are the warnings
return sortedRequest;
}
sortedRequest
是一个对象,与 相同request
,所以我有关于在对象中使用索引的警告。在普通的 javascript 中可以正常工作,我如何处理和修改代码以不出现该警告?
我不能使用type 定义sortedRequest
或request
as或任何东西,否则 Elinst 会抛出错误(我也不能更改该规则)。any
any
编辑:
我已经尝试过 tscpp 的回答。这是我现在的代码:
export default function sortFields (
request: Record<string, unknown>
): Partial<FeeLookupRequest> {
return fieldsOrder.reduce((sortedRequest: Record<string, unknown>, key) => {
if (key in request) {
sortedRequest[key] = request[key];
}
return sortedRequest;
}, {});
}
现在没有任何警告。
解决方案
的类型fieldsOrder
是类型{}
。该类型{}
没有键。您需要使用例如object
或Record<string, unknown>
最好键入 fieldsOrder。
推荐阅读
- javascript - Mongoose:加入操作,无法填充
- java - 是否可以设置要滚动的元素的坐标?
- wordpress - Wordpress 文章中的自定义表格
- python - 重塑和数据透视表 - ValueError:索引包含重复的条目,无法重塑
- mysql - 在 MySQL 中运行总和
- powershell - WAN IP 更改脚本
- javascript - 给定一棵二叉搜索树和两个节点 n1 和 n2,编写一个函数来计算两个节点之间的距离
- kubernetes - 无法使用 Kubernetes 云提供商在 Spinnaker 上部署 Run Job 阶段
- javascript - 是否可以根据 PHP CURL 请求调用 javascript 函数
- r - 绘制地图时 line.width 不允许有多个值