diff --git a/src/language-js/needs-parens.js b/src/language-js/needs-parens.js index d665e7ad..e2ae1bed 100644 --- a/src/language-js/needs-parens.js +++ b/src/language-js/needs-parens.js @@ -317,7 +317,8 @@ function needsParens(path, options) { parent.type === "TSTypeReference") && (node.typeAnnotation.type === "TSTypeAnnotation" && node.typeAnnotation.typeAnnotation.type !== "TSFunctionType" && - grandParent.type !== "TSTypeOperator") + grandParent.type !== "TSTypeOperator" && + grandParent.type !== "TSOptionalType") ) { return false; } diff --git a/tests/typescript_optional_type/__snapshots__/jsfmt.spec.js.snap b/tests/typescript_optional_type/__snapshots__/jsfmt.spec.js.snap index feb340e8..3debf7ef 100644 --- a/tests/typescript_optional_type/__snapshots__/jsfmt.spec.js.snap +++ b/tests/typescript_optional_type/__snapshots__/jsfmt.spec.js.snap @@ -1,5 +1,12 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`complex.ts - typescript-verify 1`] = ` +type T = [("a" | "b")?]; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +type T = [("a" | "b")?]; + +`; + exports[`simple.ts - typescript-verify 1`] = ` type X = [number, string?]; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/tests/typescript_optional_type/complex.ts b/tests/typescript_optional_type/complex.ts new file mode 100644 index 00000000..f5c170a3 --- /dev/null +++ b/tests/typescript_optional_type/complex.ts @@ -0,0 +1 @@ +type T = [("a" | "b")?];