angular - 具有不同属性名称的 Typescript 映射类型
问题描述
我使用 Angular 6 + TypeScript 2.7.2 并且我有一个需要ISelect[]
类型的组件:
export interface ISelect {
id: number;
title: string;
}
所以每次我调用组件时,我都需要传递一个ISelect[]
. 例如,我有一个IProject[]
,我需要将其映射到ISelect[]
另一个示例中IClient[]
,我需要再次将其映射到ISelect[]
,这里是IProject
:
export interface IProject {
id: number;
name: string;
code: string;
clientId: number;
status: number;
level: number;
masterKey: number;
parentId?: number;
}
我需要像这个伪代码一样映射它。
myprojects: IProject[];
myselect: ISelect[] = myprojects.Foreach.Map<ISelect>(id: id, title: name);
或者:
export interface IClient {
code: number,
fullname: string,
streetNumber: string,
streetName: string,
postalCode: string,
city: string,
isActive: boolean
}
我需要这张地图:
myClients: IClient[];
myselect: ISelect[] = myClients.Foreach.Map<ISelect>(id: code, title: fullname);
我怎么能做这个映射。我更愿意避免在我的源数组中有一个 for 循环。但每次我需要转换时,我都可以有不同的映射。有什么建议吗?
解决方案
像这样的东西会起作用
myselect: ISelect[] = this.myprojects.map(p => { return <ISelect>{ id: p.id, title: p.name } });