diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index d43bd907c46..ab3a09abe24 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -1641,10 +1641,14 @@ namespace ts { error(errorNode, diag, moduleReference, resolvedModule.resolvedFileName); } else if (noImplicitAny && moduleNotFoundError) { - error(errorNode, + let errorInfo = chainDiagnosticMessages(undefined, + Diagnostics.Try_npm_install_types_Slash_0_if_it_exists_or_adding_declare_module_0_in_a_separate_file, + moduleReference); + errorInfo = chainDiagnosticMessages(errorInfo, Diagnostics.Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type, moduleReference, resolvedModule.resolvedFileName); + diagnostics.add(createDiagnosticForNodeFromMessageChain(errorNode, errorInfo)); } // Failed imports and untyped modules are both treated in an untyped manner; only difference is whether we give a diagnostic first. return undefined; diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 93e1edcb31d..447e403469f 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -3310,6 +3310,10 @@ "category": "Error", "code": 7034 }, + "Try `npm install @types/{0}` if it exists or adding `declare module '{0}'` in a separate file.": { + "category": "Error", + "code": 7035 + }, "You cannot rename this element.": { "category": "Error", "code": 8000