Skip to content

Commit

Permalink
fix: jsx is undefined by default, not preserve or react (#1102)
Browse files Browse the repository at this point in the history
* fix: `jsx` is undefined by default, not preserve or react

- one gets an error when using JSX without configuring `jsx`:
  `error TS17004: Cannot use JSX unless the '--jsx' flag is provided.`

- TSConfig Reference said default was `react`, which is inaccurate
- Compiler Options said default was `preserve`, which is also inaccurate

- Add a `undefined` as the default in TSConfig Reference, same as
  allowUnrechableCode
- Remove the default in Compiler Options, same as all the other options
  without defaults

----
History:

Reference:
- `preserve` was written as the default in eae5cc3#diff-444415c73770eafd0f9db7d708d74131R5
- But then was written as `react` in the body in eae5cc3#diff-444415c73770eafd0f9db7d708d74131R5
- It was then switched to `react` in 450ae96#diff-a912c6af3a16bf4288093c1264955bc6R120
- And then removed in 76b7d43#diff-a912c6af3a16bf4288093c1264955bc6L120

Compiler Options:
- `preserve` was written as the default in 66f17ad#diff-bfc78b96c15b0ee906c1ab6176546dceR41

* Update Compiler Options.md

* Update Compiler Options.md

Co-authored-by: Orta Therox <[email protected]>
Co-authored-by: Orta Therox <[email protected]>
  • Loading branch information
3 people authored Sep 18, 2020
1 parent 78d3b56 commit b929d9e
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ Option | Type | Default
`--inlineSources` | `boolean` | `false` | Emit the source alongside the sourcemaps within a single file; requires `--inlineSourceMap` or `--sourceMap` to be set.
`--init` | | | Initializes a TypeScript project and creates a `tsconfig.json` file.
`--isolatedModules` | `boolean` | `false` | Perform additional checks to ensure that separate compilation (such as with [`transpileModule`](https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API#a-simple-transform-function) or [@babel/plugin-transform-typescript](https://babeljs.io/docs/en/babel-plugin-transform-typescript)) would be safe.
`--jsx` | `string` | `"preserve"` | Support JSX in `.tsx` files: `"react"`, `"preserve"`, `"react-native"`. See [JSX](/docs/handbook/jsx.html).
`--jsx` | `string` | | Support JSX in `.tsx` files: `"react"`, `"preserve"`, `"react-native"`. See [JSX](/docs/handbook/jsx.html).
`--jsxFactory` | `string` | `"React.createElement"` | Specify the JSX factory function to use when targeting react JSX emit, e.g. `React.createElement` or `h`.
`--jsxFragmentFactory` | `string` | `"React.Fragment"` | Specify the JSX fragment factory function to use when targeting react JSX emit, e.g. `Fragment`.
`--keyofStringsOnly` | `boolean` | `false` | Resolve `keyof` to string valued property names only (no numbers or symbols).
Expand Down
3 changes: 2 additions & 1 deletion packages/tsconfig-reference/scripts/tsconfigRules.ts
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,7 @@ export const defaultsForOptions = {
inlineSourceMap: "false",
inlineSources: "false",
isolatedModules: "false",
jsx: "undefined",
jsxFactory: "`React.createElement`",
keyofStringsOnly: "false",
listEmittedFiles: "false",
Expand Down Expand Up @@ -186,7 +187,7 @@ export const defaultsForOptions = {
};

export const allowedValues = {
jsx: ["`react` (default)", "`react-native`", "`preserve`"],
jsx: ["`react`", "`react-native`", "`preserve`"],
jsxFactory: ["Any identifier or dotted identifier"],
lib: ["See main content"],
target: [
Expand Down

0 comments on commit b929d9e

Please sign in to comment.