Typescript 3.0.1给我的类中的setter编译错误,但是它仍然可以正常工作,就像我在图片中看到的那样,当我运行JS时。
代码如下:
有什么理由吗?我如何获取它进行编译而不会出现错误,因为在我学习打字稿时,这使我感到困惑。
答案 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
。