diff --git a/src/services/stringCompletions.ts b/src/services/stringCompletions.ts index f363ff2fe14..cc0b94507d8 100644 --- a/src/services/stringCompletions.ts +++ b/src/services/stringCompletions.ts @@ -223,7 +223,9 @@ namespace ts.Completions.StringCompletions { function stringLiteralCompletionsFromProperties(type: Type | undefined): StringLiteralCompletionsFromProperties | undefined { return type && { kind: StringLiteralCompletionKind.Properties, - symbols: type.getApparentProperties().filter(prop => !isPrivateIdentifierPropertyDeclaration(prop.valueDeclaration)), + symbols: type.getApparentProperties().filter(prop => + !isPrivateIdentifierPropertyDeclaration( + isTransientSymbol(prop) && prop.syntheticOrigin ? prop.syntheticOrigin.valueDeclaration : prop.valueDeclaration)), hasIndexSignature: hasIndexSignature(type) }; } diff --git a/tests/cases/fourslash/completionForStringLiteral_mappedTypeMembers.ts b/tests/cases/fourslash/completionForStringLiteral_mappedTypeMembers.ts new file mode 100644 index 00000000000..0822cf9eafa --- /dev/null +++ b/tests/cases/fourslash/completionForStringLiteral_mappedTypeMembers.ts @@ -0,0 +1,18 @@ +/// + +////type Foo = { +//// a: string; +//// b: string; +////}; +//// +////type A = Readonly; +////type B = A["[|/**/|]"] + +const replacementSpan = test.ranges()[0]; +verify.completions({ + marker: "", + exact: [ + { name: "a", replacementSpan }, + { name: "b", replacementSpan } + ] +});