打字稿,在类型“{}”上找不到参数类型为 '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 工作正常,我如何处理和修改代码以消除该警告?

我无法将 sortedRequestrequest 定义为 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,例如 objectRecord<string, unknown> 最好。