Skip to content

Commit 41d3f0a

Browse files
Merge pull request #28071 from pesca/improveCodeFix
Improve code fix for missing members
2 parents cc36e29 + de31865 commit 41d3f0a

File tree

4 files changed

+33
-1
lines changed

4 files changed

+33
-1
lines changed

src/services/codefixes/fixAddMissingMember.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,10 @@ namespace ts.codefix {
185185
const widenedType = checker.getWidenedType(checker.getBaseTypeOfLiteralType(checker.getTypeAtLocation(otherExpression)));
186186
typeNode = checker.typeToTypeNode(widenedType, classDeclaration);
187187
}
188+
else {
189+
const contextualType = checker.getContextualType(token.parent as Expression);
190+
typeNode = contextualType ? checker.typeToTypeNode(contextualType) : undefined;
191+
}
188192
return typeNode || createKeywordTypeNode(SyntaxKind.AnyKeyword);
189193
}
190194

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
/// <reference path='fourslash.ts' />
2+
3+
//// class C {}
4+
//// const x: number = new C().x;
5+
6+
verify.codeFix({
7+
description: "Declare property 'x'",
8+
index: 0,
9+
newFileContent:
10+
`class C {
11+
x: number;
12+
}
13+
const x: number = new C().x;`
14+
});
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
/// <reference path='fourslash.ts' />
2+
3+
//// class C {}
4+
//// const x: number = new C().x;
5+
6+
verify.codeFix({
7+
description: "Add index signature for property 'x'",
8+
index: 1,
9+
newFileContent:
10+
`class C {
11+
[x: string]: number;
12+
}
13+
const x: number = new C().x;`
14+
});

tests/cases/fourslash/codeFixAddMissingMember_typeParameter.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ verify.codeFix({
1919
index: 0,
2020
newFileContent:
2121
`interface I {
22-
bar: any;
22+
bar: number;
2323
}
2424
2525
function f<T>(t: T): number {

0 commit comments

Comments
 (0)