[英]Typescript interface type mapping to an object that consists of an original object and a new object built from original object's fields
我想將一個類型 X 映射到另一個由 X 和 Z 組成的類型 Y,其中 Z 包含 X 的兩個值。聽起來很復雜,所以你會找到下面的代碼。
對於來自數據庫的數據對象,我有以下模型:
export interface Task {
description: string;
name: string;
beginDate: string;
endDate: string;
}
調用數據庫后,我想將這些對象映射到以下類型:
export interface TaskWithDate {
task: Task;
fullDate: FullDate;
}
其中 FullDate 是具有以下定義的接口:
export Interface FullDate {
beginDate: string;
endDate: string;
}
...它應該用來自Task
beginDate
和endDate
填充。
所以,我打電話給數據庫並想做映射:
tasks: Task[];
this.tasks = this.getAllTasks(); // db call
this.ticketsWithDate = this.tasks.map(
t => { return <TasktWithDate>{ task: t, fullDate: null }}
);
問題:如何獲取Task
( t
) 的startDate
和endDate
以在 map 函數中創建FullDate
對象?
像您一樣遍歷任務數組,然后從中映射您需要的相應字段以形成TaskWithDate
數組,如下所示:
ticketsWithDate: TaskWithDate[];
this.ticketsWithDate = this.tasks.map(
tsk => {
return {
task: tsk, // map entire task object
fullDate: { // fetch begin and end dates from task to
beginDate: tsk.beginDate, // form a new key i.e fullDate
endDate: tsk.endDate
}
};
}
);
很簡單,你為什么不試試這個,
this.ticketsWithDate = this.tasks.map(
t => {
let fullDate: FullDate = {
beginDate = t.beginDate,
endDate = t.endDate
}
return <TasktWithDate>{ task: t, fullDate: fullDate }
}
);
或這個,
this.ticketsWithDate = this.tasks.map(
t => {
return <TasktWithDate>{ task: t, fullDate: {
beginDate = t.beginDate,
endDate = t.endDate
}
}
}
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.