我有一个原始数据列表,例如以下的模拟数据,需要生成为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));
如何创建一个类,其中计算字段为吸气剂:
export class Student implements Human {
first: string;
last: string;
state: string;
public get fullName() {
return `${this.first} ${this.last}`;
}
public get adress() {
return `${this.first} ${this.last} live a ${this.state}`;
}
}