Skip to content

Commit 645b3dd

Browse files
authored
fix(51920): skip TypeScript types in js files (#51922)
1 parent 20f3060 commit 645b3dd

File tree

2 files changed

+30
-7
lines changed

2 files changed

+30
-7
lines changed

src/services/codefixes/helpers.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,7 @@ export function createSignatureDeclarationFromSignature(
341341
const program = context.program;
342342
const checker = program.getTypeChecker();
343343
const scriptTarget = getEmitScriptTarget(program.getCompilerOptions());
344+
const isJs = isInJSFile(enclosingDeclaration);
344345
const flags =
345346
NodeBuilderFlags.NoTruncation
346347
| NodeBuilderFlags.SuppressAnyReturnType
@@ -351,9 +352,9 @@ export function createSignatureDeclarationFromSignature(
351352
return undefined;
352353
}
353354

354-
let typeParameters = signatureDeclaration.typeParameters;
355+
let typeParameters = isJs ? undefined : signatureDeclaration.typeParameters;
355356
let parameters = signatureDeclaration.parameters;
356-
let type = signatureDeclaration.type;
357+
let type = isJs ? undefined : signatureDeclaration.type;
357358
if (importAdder) {
358359
if (typeParameters) {
359360
const newTypeParameters = sameMap(typeParameters, typeParameterDecl => {
@@ -386,11 +387,13 @@ export function createSignatureDeclarationFromSignature(
386387
}
387388
}
388389
const newParameters = sameMap(parameters, parameterDecl => {
389-
const importableReference = tryGetAutoImportableReferenceFromTypeNode(parameterDecl.type, scriptTarget);
390-
let type = parameterDecl.type;
391-
if (importableReference) {
392-
type = importableReference.typeNode;
393-
importSymbols(importAdder, importableReference.symbols);
390+
let type = isJs ? undefined : parameterDecl.type;
391+
if (type) {
392+
const importableReference = tryGetAutoImportableReferenceFromTypeNode(type, scriptTarget);
393+
if (importableReference) {
394+
type = importableReference.typeNode;
395+
importSymbols(importAdder, importableReference.symbols);
396+
}
394397
}
395398
return factory.updateParameterDeclaration(
396399
parameterDecl,
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/// <reference path="fourslash.ts" />
2+
3+
// @allowJs: true
4+
// @checkJs: true
5+
// @filename: /a.js
6+
/////**
7+
//// * @type {{ f: (x: string) => number }}
8+
//// */
9+
////[|export const foo = {}|]
10+
11+
verify.codeFix({
12+
index: 0,
13+
description: ts.Diagnostics.Add_missing_properties.message,
14+
newRangeContent:
15+
`export const foo = {
16+
f: function(x) {
17+
throw new Error("Function not implemented.");
18+
}
19+
}`,
20+
});

0 commit comments

Comments
 (0)