types中的undefined vs unassigned变量

时间:2016-01-23 15:31:23

标签: typescript

我不明白为什么没有打字稿编译器将undefinedunassigned变量分类。

class MyClass {
   N1: number;
   N2: number;
}

var mc = new MyClass();
mc.N2 = mc.N1;
alert(mc.N2); // output: undefined

为什么输出Use of unassigned variable 'mc.N1'

不能undefined,因为我已经明确定义了。它是一个数字(一个完全没有默认值的数字)。

另外,undefined表示:我们没有变量mc.N2

我的问题是:我误解了什么吗?如果是,请纠正我。

2 个答案:

答案 0 :(得分:2)

以下是您在javascript中的代码:

var MyClass = (function () {
    function MyClass() {
    }
    return MyClass;
})();
var mc = new MyClass();
mc.N2 = mc.N1;
alert(mc.N2);
  

为什么输出没有使用未分配的变量' mc.N1'?

javascript中没有这样的状态未分配。

  

因为我已经明确定义,所以不能定义。这是一个数字(a   完全没有默认值的数字)。

在javascript中,变量是未定义的,未分配任何值,
或null也是一个值,或任何字符串,ingeger或float,date或bool。 但是声明number对变量的值没有影响。它是打字稿内部事务。

  

此外,未定义的意思是:我们没有变量mc.N2。

未定义并不意味着,你没有变量,这意味着mc.N2变量没有赋值但是

答案 1 :(得分:2)

你误解了未定义的含义。这并不意味着该属性是在代码中定义的。让我们直接从MDN阅读:

  

尚未赋值的变量属于undefined类型。

有关详细信息,请参阅此处undefined

这正是您的代码中发生的事情。从未分配过mc.N1的值。

希望这有帮助。