Microsoft/TypeScript

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

Open

#55,347 opened on 2023幎8月13日

GitHub で芋る
 (2 comments) (0 reactions) (0 assignees)TypeScript (6,726 forks)batch import
Experience EnhancementHelp WantedSuggestion

Repository metrics

Stars
 (48,455 stars)
PR merge metrics
 (平均マヌゞ 6d 17h) (30d で 9 merged PRs)

説明

🔎 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.

コントリビュヌタヌガむド