TypeScript map函数用于更改属性类型

时间:2016-05-14 14:16:24

标签: typescript

我正在尝试使用map函数来转换属性类型。

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;
});

上面的代码将返回到var2

[{path:"aa",comp:A},{path:"b",comp:A}]

我需要的是

[{path:"aa",comp:A},{path:"b",comp:B}]

我如何达到这个目的?

1 个答案:

答案 0 :(得分:3)

您正在尝试在类名(作为字符串)和实际类之间进行映射 你可以像这样维护一个映射对象:

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;
});

Code in playground