TypeScript:如何用JSON字符串化类定义?

时间:2018-11-17 02:59:44

标签: json typescript

说我们有

class MyClass {
  myProperty: string
}

是否有内置函数或简单的方法来获取JSON?

{
  "myProperty": "string"
}

编辑:我的最终目标是我想以某种结构化对象语法(如JSON)动态将类型化的类定义打印到Web视图。我正在尝试制作一个服务器API,该API将返回各种自定义类的架构-例如http://myserver.com/MyClass应该以JSON字符串或其他结构化表示形式返回MyClass的属性及其类型。

2 个答案:

答案 0 :(得分:1)

Typescript类属性仅在构建时存在。编译为.js后,它们将从您的源中删除。因此,没有运行时方法可以访问类属性。

您的代码段编译为:

var MyClass = /** @class */ (function () {
    function MyClass() {
    }
    return MyClass;
}());

如您所见,该属性消失了。

根据您的更新,我遇到了这个确切的问题。这就是我解决的方法。

  1. 我的基于JSON的API全面使用json模式进行类型验证,还公开了这些架构供客户端重用。
  2. 我使用了一个npm包来自动将json模式转换为Typescript。

这很棒。

答案 1 :(得分:0)

Evert是正确的,但是解决方法如下所示

class MyClass {
  myProperty: string = 'string'
}

JSON.stringify(new MyClass) // shows what you want

换句话说,设置默认属性值可使TS将属性编译为JS

如果上述解决方案不可接受,那么我建议您使用https://dsherret.github.io/ts-simple-ast/用类来解析TS文件。