我正在Angular项目中使用库GoJS。
当我想从gojs返回一个只有一个参数的new Size()
时,另一个参数必须是NaN:
我正在做类似new Size(NaN, height)
的事情
Size((的构造函数如下所示:constructor(w?: number, h?: number);
为什么我不能使用null
而不是NaN
?
使用null
时,浏览器返回Error: Invalid arguments to Size constructor: null, 200
我没有问题要解决,我只是不明白为什么它不能与null
一起工作
原因是NaN
的类型为number
,其中null
的类型为null
。如果需要number
,则不能通过null
。若这个构造函数的类型是constructor(w?: number | null, h?: number | null)
,那个么使用它作为new Size(null, null)
将是正确的类型。
let a: number = NaN; // NaN is number
a = null; // error as null is not number
let b: number | null = NaN; // fine as before
b = null; // also fine as null is explicitly define in the type
此外,Error: Invalid arguments to Size constructor: null, 200
是运行时错误,这意味着在构造函数内部,代码可能通过typeof
检查参数类型,如果任何参数不是数字,则引发此异常。