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,
}));
我正在使用 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,
}));