enum昨天我在我们的文件中添加了一个app.d.ts,其中包含大多数全局应用程序特定类型。
该文件大致如下所示:
\n// app.d.ts\nexport module App\n{\n // \xe2\x80\xa6 more definitions\n\n enum MyEnum\n {\n A,\n B,\n C,\n D\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n这本身编译得很好。现在,如果您尝试在不同的文件中使用所述枚举,如下所示:
\n// a.ts\nimport {App} from "./app";\n\nlet something = App.MyEnum.A;\nRun Code Online (Sandbox Code Playgroud)\nTypeScript 抱怨它突然无法解析该文件app.d.ts。
经过大量调试和阅读文档后,我发现了以下免责声明:
\n\n\n枚举是运行时存在的真实对象
\n
因此,当MyEnum从app.d.ts它自己的MyEnum.ts文件移动并显式导出它时,它突然起作用了:
// MyEnum.ts\nexport enum MyEnum\n{\n A,\n B,\n C,\n D\n}\nRun Code Online (Sandbox Code Playgroud)\n// a.ts\nimport {MyEnum} from "./MyEnum";\n\nlet something = MyEnum.A;\nRun Code Online (Sandbox Code Playgroud)\n所以现在我真正的问题是:这是因为 TypeScript 不会将枚举值内联到常量中(除非您正在使用const enum),而是将它们保留为真实对象,并且因为文件.d.ts在编译时基本上被丢弃了TypeScript 转换为 JavaScript,它失败并出现这种非常奇怪且不相关的错误消息?
由于我刚刚遇到了同样的错误,并且您的问题帮助我立即修复了它(谢谢!),我认为您问题的答案是:是的,enum从文件导出/导入 s.d.ts不起作用,并导致这有点误导错误。
不过,有效的方法是将.ts具有相同名称的文件放在同一位置,以便在您的情况下app.d.ts共存app.ts于同一文件夹中。这使您enum无需更改导入即可导入。导入仍然适用于import { MyEnum } from "./app";您的情况。
| 归档时间: |
|
| 查看次数: |
3915 次 |
| 最近记录: |