我有A型、B型和一个叫做Person的类。我需要将A类型的数组转换为B类型的数组然后以某种方式将它作为输入数据发送给类。我真的卡住了,不知道该怎么做。
类型A和此类型的数组:
type A = Array<[string, number, string]>;
const a: A = [
['Name1', 15, 'City1'],
['Name2', 44, 'City2'],
['Name3', 23, 'City3'],
['Name4', 73, 'City4'],
['Name5', 12, 'City5']
['Name6', 37, 'City6']];
B型:
type B = {
[id: string]: Person}
类人:
class Person {
_id: string; // must be unique
age: number;
name: string;
city: string;
constructor(data) {
if (data == null) {
console.log("No data presented")
} else {
this._id = data._id
this.age = data.age
this.name = data.name
this.city = data.city
}
}
tellUsAboutYourself() {
console.log(
`Person with unique id = ${this._id} says:n
Hello! My name is ${this.name}. I was born in ${this.city}, ${this.age} years ago.`
);
}}
我这样做了:
export const b: B[] = a.map(([name,age,city], index) => ({
[index]: new Person(${index}, {name, age, city})}))
但是由于某些原因,现在我不能像这样调用类的方法:
for (let person of b) {
console.log(person.tellUsAboutYourself());
}
考虑这个例子:
type Params = [name: string, age: number, city: string]
type A = Array<Params>;
type B = {
[id: string]: Person
}
class Person {
constructor(
public _id: string,
public name: string,
public age: number,
public city: string
) { }
}
const a: A = [
['Name1', 15, 'City1'],
['Name2', 44, 'City2'],
['Name3', 23, 'City3'],
['Name4', 73, 'City4'],
['Name5', 12, 'City5'],
['Name6', 37, 'City6']
];
export const b: B[] = a.map((elem, index) => ({
[index]: new Person(`${index}`, ...elem)
}))
游乐场
您只需要在Person
构造函数参数中保留Params
元素的顺序。