microsoft / microsoft/TypeScript

Give `{}` some other type than `{}` so it doesn't cause subtype reduction problems with primitives

Open
#37,931 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Needs Proposal Suggestion
Dominant language
Go
Stars
111k
Forks
14.3k
Avg merge
2d 4h
Merged PRs (30d)
132

Description

TypeScript Version: 3.9.0-beta

Search Terms:
Array
Code

let a = [{a:1},1,2,3] // OK, Expected (number | { a: number; })[]
let b = [{},1,2,3] // Error,  Expected: `({}|1)[]` Actual: `{}[]`

Playground Link:

Playground Link

Related Issues:

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the TypeScript 3.9.0-beta Playground link and reproduce the two array-literal examples. Investigate how the type checker infers {} alongside primitive elements; done means the second example preserves the expected union type instead of reducing to {}[].

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
compilers
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.