存在以任何方式从typescript类生成JSON声明?

时间:2017-03-24 17:15:28

标签: json typescript

示例

class A {
       constructor(public val1: number, public val2: number,public val3: string, public b: B) {
 }
}

class B {
       constructor(public val4: boolean, public val5: number) {
 }
}

存在任何接收类A并返回类的JSON结构的函数,无论它是否只是可视化,都返回:

{val1: number, val2: number, val3: string, b: {val4: boolean, val5: number}}

打字稿中的一个类,它不再是{nameProperty:data type,...}

的散列

我想要只有属性的类,没有方法。

1 个答案:

答案 0 :(得分:1)

我会更好地解释我在评论中所写的内容。

在typecript中定义一个类时,你需要在其中定义成员,但是当它被编译为js时,成员并没有真正被添加到类中。

考虑以下打字稿:

class A {
    str: string;
    num: number;
}

汇编为:

var A = (function () {
    function A() {
    }
    return A;
}());

正如您所看到的,js代码中没有strnum成员的踪迹。
分配值时:

class A {
    constructor(public str: string, public num: number) {}
}

汇编为:

var A = (function () {
    function A(str, num) {
        this.str = str;
        this.num = num;
    }
    return A;
}());

您可以在这里看到strnum,但请注意它们已添加到构造函数中的实例中,它们不会添加到原型中(与方法不同)或A ,所以在你有一个实例之前,没有办法访问它们。

因此,您无法获得类中属性的映射 您可以使用reflect-metadata包保存成员元数据。