Skip to content

Type narrowing with literal index in tuples #26323

Description

@yahiko00

Search Terms

type inference narrowing literal array tuple

Suggestion

It would be convenient if TypeScript could narrow the type of an item in a tuple, with literal numeric index, especially when the tuple can contain null items.

Use Cases

For fixed length tuples, we often access each item with a literal numeric index.
When an item of such a tuple is null, TypeScript seems not to be able to narrow the item's type after a null check.

Examples

let period: [Date, Date | null] = [new Date(), null];
let dateEndStr = [period[1] ? period[1].toISOString() : null]; // Error: object period can be null

Checklist

My suggestion meets these guidelines:

  • This wouldn't be a breaking change in existing TypeScript / JavaScript code
  • This wouldn't change the runtime behavior of existing JavaScript code
  • This could be implemented without emitting different JS based on the types of the expressions
  • This isn't a runtime feature (e.g. new expression-level syntax)

Metadata

Metadata

Assignees

No one assigned

    Labels

    DuplicateAn existing issue was already created

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions