fix: avoid to overwrite component options on IE <= 10 #203
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.
fix #192
Since IE <= 10 does not have
__proto__
, TypeScript just assigns the static properties of the super class in such environment. It causes the problem in static member forwarding.The problem is the inherited properties are declared as same manner as the sub class property. Then the super component options (
Ctor.options
) are also enumerated in forwarding process and accidentally overwrite the extended Vue constructor.To avoid this behavior, we can check equality of the reference of super class property and sub class property. If they are the same, we can say the property is inherited property.
Unfortunately, primitive values cannot be checked by this approach because the users may declare the same named properties with the same value. So I leave them to always forward for safety.
@HerringtonDarkholme @kaorun343
It would be appreciated if you input any comments/suggestion 🙏