27 lines
956 B
Markdown
27 lines
956 B
Markdown
#### Add parentheses to numbers in optional member expression (#17190 by @fisker)
|
|
|
|
There is an inconsistency when formatting member expression where the object is a number before Prettier main.
|
|
|
|
When using `babel` parser(and other Babel based parsers), we print the number as unparenthesized, when using `typescript` parser(and other ESTree parsers), we print it as parenthesized.
|
|
|
|
Technically parentheses are not needed, but if we print it as `1?.toString()` and later users realize it's unnecessary to use `?.`, users can't simply remove the question mark because `1.toString()` will raise a `SyntaxError`, for this reason, we decide to always put parentheses around it.
|
|
|
|
<!-- prettier-ignore -->
|
|
```jsx
|
|
// Input
|
|
(1)?.toString();
|
|
(1.5)?.toString();
|
|
|
|
// Prettier stable (--parser=babel)
|
|
1?.toString();
|
|
1.5?.toString();
|
|
|
|
// Prettier stable (--parser=typescript)
|
|
(1)?.toString();
|
|
(1.5)?.toString();
|
|
|
|
// Prettier main
|
|
(1)?.toString();
|
|
(1.5)?.toString();
|
|
```
|