Skip to content

Commit

Permalink
Merge pull request #1093 from eclipse-thingweb/relu91-docs-1
Browse files Browse the repository at this point in the history
docs(contributing): add a guide for checking of `undefined` or `null`
  • Loading branch information
relu91 authored Sep 22, 2023
2 parents aae70f4 + 20387d5 commit bd247a0
Showing 1 changed file with 25 additions and 0 deletions.
25 changes: 25 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down

0 comments on commit bd247a0

Please sign in to comment.