Skip to content

When using Number.is*, the parameter's type is not inferred as number #44665

Closed
@til-schneider

Description

@til-schneider

lib Update Request

Configuration Check

My compilation target is ES2015 and my lib is the default.

Missing / Incorrect Definition

Number.isFinite, Number.isInteger, Number.isNaN and Number.isSafeInteger

Sample Code

function foo(value: number | null | undefined) {
    if (Number.isFinite(value)) {
        bar(value)   // value should be inferred as `number` here
    }
}

function bar (value: number) {
    ...
}

Documentation Link

Number.isFinite

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isFinite

This means only values of the type number and are finite return true.

Number.isInteger

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger

If the target value is an integer, return true, otherwise return false.

Number.isNaN

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isNaN

This also means that only values of the type number, that are also NaN, return true.

Number.isSafeInteger

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger

A Boolean indicating whether or not the given value is a number that is a safe integer.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions