microsoft / microsoft/TypeScript
Empty types and types with `never` as a key behave differently
Open
Nobody has claimed this yet.
Bug
Domain: Mapped Types
Help Wanted
- Dominant language
- Go
- Stars
- 111k
- Forks
- 14.4k
- Avg merge
- 1d 19h
- Merged PRs (30d)
- 117
Description
🔎 Search Terms
Mapped type
unknown
🕗 Version & Regression Information
- This changed between versions 4.7.4 and 4.8.4
⏯ Playground Link
💻 Code
declare const u: unknown;
type A = {[K in never]: any}
// ^?
// No Error
const a: null | undefined | {} = u;
// ^?
// Error
const b: null | undefined | A = u;
// ^?
🙁 Actual behavior
The types a and b appear to be the same, but only the assignment to b causes an error.
🙂 Expected behavior
I'm not sure which is better, I think it's either no error or both errors.
Additional information about the issue
Both were errors in version 4.7.4
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the linked TypeScript Playground reproduction and compare the behavior across the reported compiler versions. Investigate the differing treatment of the empty mapped type and the never key; done means the assignment behavior is made deliberately consistent and covered by a regression test.
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
- 30/100