为什么我必须在构造函数中使用 NaN 而不能使用 null?打字稿
Why do I have to use NaN in a constructor and can't use null? typescript
我在我的 Angular 项目中使用 GoJS 库。
当我想从gojs中return一个new Size()
只有一个参数时,另一个必须是NaN:
我正在做类似 new Size(NaN, height)
的事情
Size() 的构造函数如下所示:constructor(w?: number, h?: number);
为什么我不能使用 null
而不是 NaN
?
使用 null
浏览器时 returns 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
并且如果任何参数不是数字则引发此异常。
我在我的 Angular 项目中使用 GoJS 库。
当我想从gojs中return一个new Size()
只有一个参数时,另一个必须是NaN:
我正在做类似 new Size(NaN, height)
Size() 的构造函数如下所示:constructor(w?: number, h?: number);
为什么我不能使用 null
而不是 NaN
?
使用 null
浏览器时 returns 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
并且如果任何参数不是数字则引发此异常。