Port TypeScript PR #63054: Default types to [], support "*" wildcard#2688
Port TypeScript PR #63054: Default types to [], support "*" wildcard#2688
types to [], support "*" wildcard#2688Conversation
… `"*"` wildcard Co-authored-by: RyanCavanaugh <6685088+RyanCavanaugh@users.noreply.github.com>
types to [], support "*" wildcard
There was a problem hiding this comment.
Pull request overview
This PR ports TypeScript PR #63054, implementing a breaking change where types defaults to [] (no auto-discovery) instead of discovering all @types packages. Users must explicitly use types: ["*"] to enable the previous auto-discovery behavior.
Changes:
- Added
UsesWildcardTypes()method to check iftypescontains"*" - Modified automatic type directive resolution to handle wildcard substitution
- Swapped diagnostic messages to recommend adding to
typesfield when wildcards are NOT in use - Updated test baselines to reflect new error messages (TS2580→TS2591, TS2581→TS2592, etc.)
Reviewed changes
Copilot reviewed 156 out of 156 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
internal/core/compileroptions.go |
Added UsesWildcardTypes() helper method |
internal/module/resolver.go |
Updated GetAutomaticTypeDirectiveNames() to handle wildcard expansion and return empty array by default |
internal/checker/checker.go |
Inverted diagnostic message logic - now suggests adding to types when NO wildcard |
internal/compiler/fileInclude.go |
Updated to use UsesWildcardTypes() instead of checking Types != nil |
testdata/baselines/reference/** |
Updated test baselines reflecting new default behavior |
internal/fourslash/_scripts/failingTests.txt |
Removed 3 tests that now pass |
|
Is this not missing an error update for core/built-in modules for Node.js? microsoft/TypeScript#63054 has function getCannotResolveModuleNameErrorForSpecificModule(moduleName: Expression): DiagnosticMessage | undefined {
if (moduleName.kind === SyntaxKind.StringLiteral) {
if (nodeCoreModules.has((moduleName as StringLiteral).text)) {
if (usesWildcardTypes(compilerOptions)) {
return Diagnostics.Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_node_Try_npm_i_save_dev_types_Slashnode;
}
else {
return Diagnostics.Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_node_Try_npm_i_save_dev_types_Slashnode_and_then_add_node_to_the_types_field_in_your_tsconfig;
}
}
}
return undefined;
} |
|
@copilot Look into this; recheck the original PR for missing bits. |
…dules; add beforeEach and NodeJS cases Co-authored-by: jakebailey <5341706+jakebailey@users.noreply.github.com>
Added the missing |
Ports microsoft/TypeScript#63054. Changes default behavior: when
typesis unset, no@typespackages are auto-discovered. Usetypes: ["*"]for the previous behavior.Core Changes
internal/core/compileroptions.go: AddUsesWildcardTypes()method—returns true iftypescontains"*"internal/module/resolver.go: UpdateGetAutomaticTypeDirectiveNames():typesdirectly (or[]if nil)"*"with discovered packages, deduplicateinternal/checker/checker.go: Swap diagnostic message selection logic—now suggests adding totypeswhen wildcards are NOT in usegetCannotResolveModuleNameErrorForSpecificModule()to detect Node.js core module imports and provide helpful error messages"beforeEach"to test runner cases and"NodeJS"to node casesinternal/compiler/fileInclude.go: Update automatic type directive file diagnostics to use new wildcard checkExample
Test Updates
typesfield instructions)failingTests.txt—depend on old auto-discovery behavior, will resolve when TypeScript submodule updatesOriginal prompt
💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.