为什么我必须在构造函数中使用 NaN 而不能使用 null?打字稿



我正在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检查参数类型,如果任何参数不是数字,则引发此异常。

相关内容

  • 没有找到相关文章

最新更新