首页 > 解决方案 > 具有不同属性名称的 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 循环。但每次我需要转换时,我都可以有不同的映射。有什么建议吗?

标签: angulartypescript

解决方案


像这样的东西会起作用

myselect: ISelect[] = this.myprojects.map(p => { return <ISelect>{ id: p.id, title: p.name } });

推荐阅读