rot.js
rot.js copied to clipboard
Better signature for optional function parameters
Hello, I'm just trying rot.js, and I noticed that several functions have optional parameters that are typed as SomeType | null (like here).
The issue is that TypeScript does not consider those parameters as optional: you either give a value, or an explicit null:

A more correct function signature would be
draw(x: number, y: number, ch?: string | string[], fg?: string, bg?: string) {
/** **/
}
I guess it should be an easy fix (look for all | null in the code), but as I'm literally discovering the lib, I'm not too confident on making a PR for now.
Hi @scambier,
yeah, you are completely correct. I am really not sure why we have these weird null-based signatures - perhaps to comply with existing (pre-TS) code? Passing null to an optional argument would work fine though, provided we test those values with simple if (!fg) ....
Passing
nullto an optional argument would work fine though, provided we test those values with simpleif (!fg) ....
Sure, and you'll have to do the nullish check anyway because the default value for optional arguments is undefined. Calling draw(5, 4, "@") would be the same as calling draw(5, 4, "@", undefined, undefined).