2014-04-03 30 views
0

我怀疑我要描述的是预期的行为,除了我没有想到它,它似乎是一个不错的选择,并且我找不到任何描述它的文档。TypeScript - 类成员从新对象实例中缺失

我创建了一个简单的Typescript类,用于在Angular应用程序中作为Provider的一部分。我提到最后一部分,以防万一它是相关的,但我不认为它是。

这里的类

class Config { 
    public settings: Object; 
    public locale: Object; 

    public $get:() => Config; 

    constructor() { 
     this.$get =() => this; 
    } 
} 

我已经尝试了上面的代码的各种杂版本(使用“任何”,而不是对象,不同的呈现定义$得到的,等等),但唯一的版本,其产生具有两个成员变量(设置/区域设置)的对象是我明确为其设置值的版本。例如,下面的代码将产生一个设置成员(设置为空对象{})的对象,但没有区域成员:

class Config { 
    public settings: Object; 
    public locale: Object; 

    public $get:() => Config; 

    constructor() { 
     this.settings = {}; 
     this.$get =() => this; 
    } 
} 

我所期望的,在一般情况下,是未初始化类型化的成员变量在这种情况下,设置仍然是{},但是区域设置也是{},所以它们的类型默认值(“any”,我想应该是未定义的)。

这绝对没有发生,我只是在寻找某人来确认我所看到的是正确的行为,并且(希望)指向我的文档或以其他方式解释其原因。

我不怀疑有一个很好的理由,它只是让我不知道它可能是什么。

回答

0

有些人认为类实例应该初始化它们的所有成员。有些人认为他们只应该初始化明确初始化的成员。编译器应该做什么?

这很容易理解如何“选入”来初始化:

class Config { 
    public settings: Object = undefined; 
    /* ... */ 
} 

如果你想象中的反向设计,其中成员会自动初始化,这是非常不清楚你会如何向编译器指示你不要想要settings被初始化。