TypeScript Setter编译错误,但是它仍然可以工作吗?

时间:2018-10-17 00:14:43

标签: javascript typescript set

Typescript 3.0.1给我的类中的setter编译错误,但是它仍然可以正常工作,就像我在图片中看到的那样,当我运行JS时。

代码如下:

enter image description here

有什么理由吗?我如何获取它进行编译而不会出现错误,因为在我学习打字稿时,这使我感到困惑。

1 个答案:

答案 0 :(得分:1)

当访问器定义了诸如numYear: [0-9] [0-9] [0-9] [0-9] numDayOfMonth: [0-9] | [0-9] [0-9] 之类的属性时,X访问器的返回类型必须与get访问器的参数类型相同。由于您没有注释任何一种类型,因此默认情况下,TypeScript使用set访问器实际返回的类型,该类型是在构造函数中声明的属性get的类型,即x因为number | undefined被宣布为可选。因此,在x访问器中,set的类型为value,如果number | undefined不确定,TypeScript将不允许您比较value <= 0。 / p>

要解决此问题,请更改value的类型,使其不包含x(例如,通过在构造函数中为undefined参数指定默认值)或检查x访问器中未定义的value