TypeScript:我可以为具有不同 属性 名称的类型断言一个值吗?

TypeScript: Can I assert a value to a type with different property names?

我正在使用 API 和网络框架。

我有一个接口 IResponse。看起来像这样

interface IResponse {
    Id: string;
    Name: string;
}

当我收到 API 响应时,我得到一个数组并将值断言为 IResponse[]

但是,我使用的 Web 框架要求我将此 IResponse[] 转换为具有以下接口的 IComboBoxOption[]

interface IComboBoxOption {
    key: string;
    text: string;
}

现在,我是这样转换的:

const convertedResults: IComboBoxOption[] = [];
const results = await APICall(productsRequest) as IResponse[];

results.forEach(r => {
    convertedResults.push({
        key: r.Id,
        text: r.Name,
    });
}

但是,结果量很大,forEach循环耗时太长。理想情况下,我想一起跳过转换步骤,直接将 API return 值断言为 IComboBoxOption[].

这可能吗?

注意:我无法控制 API 编辑的 属性 名称 return,我必须使用此 Web 框架。

如果不遍历每个值,就无法更改属性的名称。但是您可以使用性能更高的方法:

使用 ES6 数组方法往往工作得更快 https://leanylabs.com/blog/js-forEach-map-reduce-vs-for-for_of/

尝试使用这个:

const convertedResults: IComboBoxOptions = results.map((r) => ({
  key: r.Id,
  text: r.Name,
}));