打字稿,在类型“{}”上找不到参数类型为 'string' 的索引签名
Typescript, No index signature with a parameter of type 'string' was found on type '{}'
我有这个功能:
const fieldsOrder = [
'boo',
];
fieldsOrder.reduce((sortedRequest, key) => {
if (key in request)
sortedRequest[key] = request[key]; // Here are the warnings
return sortedRequest;
}
sortedRequest
是一个对象,与 request
相同,所以我收到关于在对象中使用索引的警告。简而言之 javascript 工作正常,我如何处理和修改代码以消除该警告?
我无法将 sortedRequest
或 request
定义为 any
或任何使用 any
类型的东西,否则 Elinst 会抛出错误(我无法更改两者都不规则)。
编辑:
我试过 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
的类型是{}
的类型。 {}
类型没有键。您需要输入 fieldsOrder,例如 object
或 Record<string, unknown>
最好。
我有这个功能:
const fieldsOrder = [
'boo',
];
fieldsOrder.reduce((sortedRequest, key) => {
if (key in request)
sortedRequest[key] = request[key]; // Here are the warnings
return sortedRequest;
}
sortedRequest
是一个对象,与 request
相同,所以我收到关于在对象中使用索引的警告。简而言之 javascript 工作正常,我如何处理和修改代码以消除该警告?
我无法将 sortedRequest
或 request
定义为 any
或任何使用 any
类型的东西,否则 Elinst 会抛出错误(我无法更改两者都不规则)。
编辑:
我试过 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
的类型是{}
的类型。 {}
类型没有键。您需要输入 fieldsOrder,例如 object
或 Record<string, unknown>
最好。