【发布时间】:2020-05-24 09:28:15
【问题描述】:
我有一个原始数据列表,例如以下 mockData 并且需要生成 object[] 格式,原始数据需要一些键值对,例如 first、last、state。但是一些键值对是昵称之类的选项。最终,我需要构建一个具有相同键值的对象数组,例如原始数据,并且某些键的值取决于另一个键的值,例如全名、地址。有没有更好的方法让我做到这一点并使其更加动态?因为我将有 20 多个不同的键值集,例如全名,需要由与原始数据相关的某些函数构建的地址 我不想创建很多全名、地址类型的代码
export const mockData: Human[] = [
{
first: 'name1',
last: 'v1',
state: 'ny',
},
{
first: 'name2',
last: 'v2',
state: 'pa',
nickname: 'rocketman',
}]
export interface Human {
first: string;
last: string;
state: string;
nickname?: string;
}
export interface Student extends Human{
fullname: string;
address: string;
}
function setFullName(first: string, last: string): string {
return `${first} ${last}`
}
function setAddress(first: string, last: string, state: string): string {
return `${first} ${last} live a ${state}`
}
function buildStudentData(jsons: Human[]): Student[] {
return jsons.map((json) => <Student> {
first: json.first,
last: json.last,
nickname: json.hasOwnProperty('nickname') ? json.nickname : json.first,
fullname: setFullName(json.first, json.last),
address: setAddress(json.first, json.last, json.state)})
}
console.log(buildStudentData(mockData));
【问题讨论】:
标签: typescript typescript-typings typescript2.0