feat: explicit set useDefineForClassFields
in ts templates
#4280
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Since TypeScript 4.3,
target: "esnext"
indicates thatuseDefineForClassFields: true
as the new default.See microsoft/TypeScript#42663
So I'm explicitly adding this field to the tsconfigs to avoid any
confusions.
Note that
lit-element
projects must useuseDefineForClassFields: false
because of lit/lit#3278Vue projects must use
useDefineForClassFields: true
so as to supportclass style
prop
definition invue-class-component
:vuejs/vue-class-component#465
Popular React state management library MobX requires it to be
true
:https://mobx.js.org/installation.html#use-spec-compliant-transpilation-for-class-properties
Other frameworks seem to have no particular opinion on this.
So I turned it on in all templates except for the
lit-element
one.Additional context
#4279 needs to be resolved before this PR to avoid confusing users.
What is the purpose of this pull request?
Before submitting the PR, please make sure you do the following
fixes lit/lit-element#123
).