diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0cd2173a7..c40b30490 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -85,6 +85,31 @@ function startFoo() { } ``` +### Checking for `undefined` or `null` + +In node-wot, we enabled [strict boolean expressions](https://typescript-eslint.io/rules/strict-boolean-expressions/). In summary, this means that in the +the code base is not allowed to use non-boolean expressions where a boolean is expected (see the [examples](https://typescript-eslint.io/rules/strict-boolean-expressions/#examples)). +How then should the contributor deal with nullable variables? For example: + +```ts +function(arg1: string | null | undefined) { + // ERROR: not allowed by strict-boolean-expressions + if (!arg) { throw new Error("arg should be defined!); } +} +``` + +Instead of checking for both null and `undefined` values (`if (arg !== undefined && arg !== null)`) the preferred solution is to use `!=` or `==` operator. Interestingly in JavaScript +with `==`, `null` and `undefined` are equal to each other. Example: + +```ts +function(arg1: string | null | undefined) { + // OK + if (arg == null) { throw new Error("arg should be defined!); } +} +``` + +Further reading on the motivations can be found [here](https://basarat.gitbook.io/typescript/recap/null-undefined#checking-for-either). + ## Commits Eclipse Thingweb uses Conventional Changelog, which structure Git commit messages in a way that allows automatic generation of changelogs.