diff --git a/src/services/codefixes/fixAddMissingMember.ts b/src/services/codefixes/fixAddMissingMember.ts
index 39d44aede66..efc02e7f615 100644
--- a/src/services/codefixes/fixAddMissingMember.ts
+++ b/src/services/codefixes/fixAddMissingMember.ts
@@ -694,7 +694,7 @@ function tryGetValueFromType(context: CodeFixContextBase, checker: TypeChecker,
}
if (isObjectLiteralType(type)) {
const props = map(checker.getPropertiesOfType(type), prop => {
- const initializer = prop.valueDeclaration ? tryGetValueFromType(context, checker, importAdder, quotePreference, checker.getTypeAtLocation(prop.valueDeclaration), enclosingDeclaration) : createUndefined();
+ const initializer = tryGetValueFromType(context, checker, importAdder, quotePreference, checker.getTypeOfSymbol(prop), enclosingDeclaration);
return factory.createPropertyAssignment(prop.name, initializer);
});
return factory.createObjectLiteralExpression(props, /*multiLine*/ true);
diff --git a/tests/cases/fourslash/codeFixAddMissingProperties27.ts b/tests/cases/fourslash/codeFixAddMissingProperties27.ts
new file mode 100644
index 00000000000..2a0e333b83e
--- /dev/null
+++ b/tests/cases/fourslash/codeFixAddMissingProperties27.ts
@@ -0,0 +1,24 @@
+///
+
+////interface Foo {
+//// a?: boolean;
+//// b: boolean;
+////}
+////type A = { [K in keyof Foo]-?: { name: K, value: `Foo ${Uppercase}` }}
+////[|const a: A = {};|]
+
+verify.codeFix({
+ index: 0,
+ description: ts.Diagnostics.Add_missing_properties.message,
+ newRangeContent:
+`const a: A = {
+ a: {
+ name: "a",
+ value: "Foo A"
+ },
+ b: {
+ name: "b",
+ value: "Foo B"
+ }
+};`,
+});