TypeScript - 缺少新对象实例的类成员

时间:2014-04-03 14:47:24

标签: typescript

我怀疑我要描述的是预期的行为,除了我没有预料到,它似乎是一个糟糕的选择,我找不到任何描述它的文档。

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

这是班级

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

    public $get: () => Config;

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

我已经尝试了上述代码的各种各样的版本(使用"任何"而不是Object,不同的定义$ get等等)但是生成具有两个成员的对象的唯一版本变量(设置/语言环境)是我明确为它们设置值的版本。例如,下面的代码将生成一个带有设置成员的对象(设置为空对象{}),但没有区域设置成员:

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

    public $get: () => Config;

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

一般来说,我所期望的是存在未初始化的类型成员变量,具有其类型的默认值("任何",我认为,合理地未定义),因此,在此大小写,设置仍然是{},但语言环境也是如此。

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

我不怀疑这是一个很好的理由,它只是让我想念它可能是什么。

1 个答案:

答案 0 :(得分:0)

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

很容易理解如何“选择加入”初始化:

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

如果你想象成员被自动初始化的反向设计,你很清楚如何向编译器表明你不希望settings被初始化。