Typescript默认属性值样式指南

时间:2017-10-06 18:54:35

标签: typescript

是否有任何样式指南定义如何设置默认属性值?希望官方。

class MyClass {
    public foo: string;
    constructor() {
        this.foo = 'asdf';
    }
}

var MyClass = /** @class */ (function () {
    function MyClass() {
        this.foo = 'asdf';
    }
    return MyClass;
}());

编译到

{{1}}

第一个更干净,类似于C#,但第二个更接近编译输出的语法(如果创建了定义文件),属性类型是显式的。

我查看了https://www.typescriptlang.org/docs/home.htmlhttps://github.com/Microsoft/TypeScript/wiki/Coding-guidelineshttps://angular.io/guide/styleguide

1 个答案:

答案 0 :(得分:2)

我不知道"官员"样式指南,可在任何地方指定。

自ES2015以来,classes are part of JavaScript。如果您的TypeScript target versionES6或更高版本,则上述内容均编译为

class MyClass {
    constructor() {
        this.foo = 'asdf';
    }
}

此外,class fields in JavaScript目前(截至2017年7月)为Stage 3 proposal,这意味着他们最终会成为该语言的机会很大。所以最终编译的输出可能是:

class MyClass {
    foo = 'asdf';
}

所有这一切都是我的说法,我不会过分担心您的TS代码是否接近"编译好的JS,因为这种差异最终会消失,在此之前,TypeScript的一个要点就是让你今天使用明天的JavaScript功能。来自TypeScript Handbook

  

在TypeScript中,我们允许开发人员现在使用这些技术,并将其编译为适用于所有主流浏览器和平台的JavaScript,而无需等待下一版本的JavaScript。

好的,所以我的建议(不是"官方")是这样做的:

class MyClass {
    public foo: string = 'asdf';
}

您已将属性类型显式为将其初始化为类字段。这两个世界中最好的,对吧?可能?

无论如何,希望有所帮助;祝你好运!