1.7 b2,ts类的诡异情况(没有默认值)



x和y,不是应该有默认值0吗?

要用js的思想去考虑这个问题,不要用c++,java的思想看待这个问题。
你需要写个构造函数,然后给属性赋个默认值,其实也就是添加属性。
看看转换后的js代码就明白了。

js 是有默认值的啊

或者ts,如何才能有默认值?难道艺每个都手动赋值吗?

默认值和默认属性是2回事哦。TS声明的类,其实就是套了个样子而已。
TS的类里面申明了这个属性并不代表就有了这个属性,它只是一个样子
第一次给属性赋值的时候,才是真的添加了这个属性。如果你没有赋值直接访问,那肯定是undefined

从目前来看,你想确保在访问某个属性的时候,该属性肯定不是undefined,那就需要在构造函数里面初始化。
TS的contructor其实就是转化为js的类构造函数,你不赋值,那js代码大概就是这样
function Test()
{
}

var o=new Test()

o.x is undefined

TS默认不会给你赋值(创造属性。)

js是无类型的,默认就是undefined

好的,谢谢你们的回答