TypeScript map-funktion för att ändra egenskapstyp
Jag försöker använda map-funktionen för att transformera egendomstypen.
class A {... }
class B {... }
var var1 = [{path:"aa",comp:"A"},{path:"b",comp:"B"}];
var var2 = var1.map(function(obj){
var rObj = {path: obj.path, component: A};
return rObj;
});
Ovanstående kod kommer att returnera till var2
[{path:"aa",comp:A},{path:"b",comp:A}]
Det jag behöver är
[{path:"aa",comp:A},{path:"b",comp:B}]
Hur kan jag uppnå detta syfte?
Svar #1
Du försöker kartlägga mellan ett klassnamn (som sträng) till den faktiska klassen.
Du kan helt enkelt underhålla ett mappningsobjekt så här:
class A { ... }
class B { ... }
var nameToClassMapping = {
A: A,
B: B
};
var var1 = [{ path: "aa", comp: "A" }, { path: "b", comp: "B" }];
var var2 = var1.map(function(obj) {
var rObj = { path: obj.path, component: nameToClassMapping[obj.comp] };
return rObj;
});
Kod i lekplats
