sucrase
sucrase copied to clipboard
export default anonymous class with class field
Thanks for this great project!
I had an issue when exporting an anonymous class with class field, generated class has null.prototype.__init.call(this);
in the constructor, which results in an error.
Example reproduction: https://sucrase.io/#compressedCode=H4sIAPiJz1wAAz2LQQ6DIBBF95zi79SNXqDtpjfwBkSG1AShGUZjYri7QLWbyfv%2F%2FZmXb2DBSHoSWA4LGi7cKNqrMWT16gST0zGCdiFv4m%2Ffv0P%2B9uQFhwI0njhSBs4T4rarbYmyskdbA%2FAw8%2Fa6GPiQc%2BE2w191%2BSaVTgWpPpSeAAAA
Code:
import React from 'react'
export default class extends React.Component {
a = {}
render() {
return (
<div>
hello
</div>
)
}
}
Generated code:
"use strict";const _jsxFileName = "sample.tsx"; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }Object.defineProperty(exports, "__esModule", {value: true});var _react = require('react'); var _react2 = _interopRequireDefault(_react);
exports. default = class extends _react2.default.Component {constructor(...args) { super(...args); null.prototype.__init.call(this); }
__init() {this.a = {}}
render() {
return (
_react2.default.createElement('div', {__self: this, __source: {fileName: _jsxFileName, lineNumber: 6}}, "hello"
)
)
}
}
I am also having this issue.
This appears to be fixed. In the sandbox, I see the output
"use strict";const _jsxFileName = "sample.tsx";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var _class;var _react = require('react'); var _react2 = _interopRequireDefault(_react);
exports. default = (_class = class extends _react2.default.Component {constructor(...args) { super(...args); _class.prototype.__init.call(this); }
__init() {this.a = {}}
render() {
return (
_react2.default.createElement('div', {__self: this, __source: {fileName: _jsxFileName, lineNumber: 6}}, "hello"
)
)
}
}, _class)