diff --git a/src/services/stringCompletions.ts b/src/services/stringCompletions.ts
index a32022f9aee..cb7260f6d80 100644
--- a/src/services/stringCompletions.ts
+++ b/src/services/stringCompletions.ts
@@ -167,9 +167,9 @@ namespace ts.Completions.StringCompletions {
case SyntaxKind.LiteralType: {
const grandParent = walkUpParentheses(parent.parent);
switch (grandParent.kind) {
+ case SyntaxKind.ExpressionWithTypeArguments:
case SyntaxKind.TypeReference: {
- const typeReference = grandParent as TypeReferenceNode;
- const typeArgument = findAncestor(parent, n => n.parent === typeReference) as LiteralTypeNode;
+ const typeArgument = findAncestor(parent, n => n.parent === grandParent) as LiteralTypeNode;
if (typeArgument) {
return { kind: StringLiteralCompletionKind.Types, types: getStringLiteralTypes(typeChecker.getTypeArgumentConstraint(typeArgument)), isNewIdentifier: false };
}
diff --git a/tests/cases/fourslash/completionsAtTypeArguments.ts b/tests/cases/fourslash/completionsAtTypeArguments.ts
new file mode 100644
index 00000000000..5b37a9b4e97
--- /dev/null
+++ b/tests/cases/fourslash/completionsAtTypeArguments.ts
@@ -0,0 +1,11 @@
+///
+
+////interface I {
+//// a: string;
+//// b: number;
+////}
+
+////type T1 = Pick;
+////interface T2 extends Pick {}
+
+verify.completions({ marker: ["1", "2"], exact: ["a", "b"] });