google / google/closure-compiler
Can't export enum directly (ES6 modules)
- Dominant language
- JavaScript
- Stars
- 7.7k
- Forks
- 1.2k
- Avg merge
- 2d 12h
- Merged PRs (30d)
- 6
Description
Input 0
``` javascript
/** @enum {string} */
export default {
CIRCLE: "circle",
SQUARE: "square",
};
```
Input 1
``` javascript
import ShapeType from "./input0";
let /** ShapeType */ something = ShapeType.CIRCLE;
```
Error [[debugger](https://closure-compiler-debugger.appspot.com/#input0%3D%252F**%250A%2520*%2520%2540enum%2520%257Bstring%257D%250A%2520*%252F%250Aexport%2520default%2520%257B%250A%2520%2520%2520%2520CIRCLE%253A%2520%2522circle%2522%252C%250A%2520%2520%2520%2520SQUARE%253A%2520%2522square%2522%252C%250A%257D%250A%26input1%3Dimport%2520ShapeType%2520from%2520%2522.%252Finput0%2522%253B%250Alet%2520%252F**%2520ShapeType%2520*%252F%2520something%2520%253D%2520ShapeType.CIRCLE%253B%250A%26conformanceConfig%26externs%26refasterjs-template%26includeDefaultExterns%3D1%26CHECK_SYMBOLS%3D1%26MISSING_PROPERTIES%3D1%26TRANSPILE%3D1%26CHECK_TYPES%3D1%26CLOSURE_PASS%3D1%26PRESERVE_TYPE_ANNOTATIONS%3D1%26PRETTY_PRINT%3D1)]:
```
input1:2: WARNING - Bad type annotation. Unknown type ShapeType$$module$input0
let /** ShapeType */ something = ShapeType.CIRCLE;
```
Workaround [[debugger](https://closure-compiler-debugger.appspot.com/#input0%3D%252F**%250A%2520*%2520%2540enum%2520%257Bstring%257D%250A%2520*%252F%250Aconst%2520ShapeType%2520%253D%2520%257B%250A%2520%2520%2520%2520CIRCLE%253A%2520%2522circle%2522%252C%250A%2520%2520%2520%2520SQUARE%253A%2520%2522square%2522%252C%250A%257D%253B%250Aexport%2520default%2520ShapeType%253B%250A%26input1%3Dimport%2520ShapeType%2520from%2520%2522.%252Finput0%2522%253B%250Alet%2520%252F**%2520ShapeType%2520*%252F%2520something%2520%253D%2520ShapeType.CIRCLE%253B%250A%26conformanceConfig%26externs%26refasterjs-template%26includeDefaultExterns%3D1%26CHECK_SYMBOLS%3D1%26MISSING_PROPERTIES%3D1%26TRANSPILE%3D1%26CHECK_TYPES%3D1%26CLOSURE_PASS%3D1%26PRESERVE_TYPE_ANNOTATIONS%3D1%26PRETTY_PRINT%3D1)]:
``` javascript
/**
* @enum {string}
*/
const ShapeType = {
CIRCLE: "circle",
SQUARE: "square",
};
export default ShapeType;
```
I think I've seen the same issue with `export default class {...}`, too.
Contributor guide
Assessment
This issue has not been assessed yet.