Esta expressão
max([1]) + 1
dá
Unable to call: `+` with arguments: (`1 | Null`, `1`).
Reasons:
- Expecting Type: `Number`, but got: `Null`.
|-- From: `Number`
|- From: +(lhs: Number, rhs: Number) -> Number
50| max([1]) + 1
^^^^^^^^
- Expecting Type: `Array<T>`, but got: `Null`.
|-- From: `Array<T>`
|- From: +<T, E>(lhs: Array<T>, rhs: E) -> Array<T | E>
50| max([1]) + 1
^^^^^^^^
- 10 more options ...
50| max([1]) + 1
^^^^^^^^^^^^
Mas typeOf(max([1]))
dá Number
. Como obter o resultado de max como um número que pode ser usado em uma operação numérica?
Olhando a documentação, o tipo de retorno da função max() é
T | Null
, que é um tipo de união :O operador de adição (
+
) espera números como ambos os argumentos, não que um deles seja do tipo união.Para usar o resultado
max()
você deve garantir que ele não pode realmente ser nulo. Uma maneira de fazer isso é converter o resultado paraNumber
. ANull
não pode ser convertido,Number
portanto, esteja ciente de que ele falhará se a lista estiver vazia.Exemplo: