microsoft / microsoft/TypeScript

Better error message when a module declaration is not found, but a module augmentation is?

Open
#55,347 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Experience Enhancement Help Wanted Suggestion
Dominant language
Go
Stars
111k
Forks
14.3k
Avg merge
1d 19h
Merged PRs (30d)
117

Description

🔎 Search Terms

declaration, augmentation

🕗 Version & Regression Information
  • This is the behavior in every version I tried, and I reviewed the FAQ for entries about module augmentation and declaration files
⏯ Playground Link

Can't be shown on Playground, since it requires two files

💻 Code
// declaration.d.ts

import { ComponentType } from "react";

declare module "a/b" {
    const B: ComponentType<any>;
    // const B: import("react").ComponentType<any>;
    export default B;
}
// file.ts
import B from "a/b";
🙁 Actual behavior

The error message is "Cannot find module 'a/b' or its corresponding type declarations (2307)". I know this works as indended from https://github.com/microsoft/TypeScript/issues/49043#issuecomment-1124047244, so my proposal is only about changing the error message.

🙂 Expected behavior

In the case where TypeScript can't find a declaration of a module but can find its augmentation, it seems very likely the user intended to make it a declaration, but didn't know top-level import/export change the meaning (like I didn't yesterday). It would be nice to have the message tell the user about the problem and guide to fixing it.

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

Reproduce the behavior with the two files shown, declaration.d.ts and file.ts, and compare the diagnostic when the module declaration is missing but its augmentation is found. Trace the module-resolution diagnostic path and update the message to explain the top-level import/export distinction; verify the revised guidance against this example and related diagnostic tests.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
compilers
Issue type
Feature
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.