'Typescript say variable can be null even if I check before
I have an argument that can be string
or null
. At the beginning of the function I check to see if this argument is null, if yes, I set a default value.
However, after this check, typescript tells me that this argument can still be null.
Here is an example
pollUrl: function (
httpClient,
url: string,
maxIterations: number | null = null,
delay = 600
): Promise<any> {
if (maxIterations == null) {
maxIterations = 25
}
return httpClient.get(url).then((result) => {
return Utils.delay(delay).then(() => Utils.pollUrl(httpClient, url, maxIterations - 1, delay))
})
},
in the Utils.pollUrl
at the end of the function, typescript is telling me maxIterations: Object is possibly 'null'.
, even if I check before
Solution 1:[1]
What about instead using a default similar to what you have with delay
:
pollUrl: function (
httpClient,
url: string,
maxIterations = 25,
delay = 600
): Promise<any> {
return httpClient.get(url).then((result) => {
return Utils.delay(delay).then(() => Utils.pollUrl(httpClient, url, maxIterations - 1, delay))
})
},
Can use like:
pollUrl(client, 'foo', undefined, 500);
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 |