【发布时间】:2021-06-16 08:16:49
【问题描述】:
我可以定义一个函数然后导出为默认值,将其定义为内联导出,或者定义它并将其导出为默认内联:
function myFunc() {
...
}
export default myFunc;
export function myFunc2() {
...
}
export default function myFunc3(param) {
...
}
我可以定义一个类然后导出为默认,定义它并内联导出,或者定义它并导出为默认内联:
class MyClass {
...
}
export default MyClass;
export class MyClass2 {
...
}
export default class MyClass3 {
...
}
很酷,所以类和函数是一致的。现在,常量:
定义然后导出为默认值:
const myConst = 42;
export default myConst;
定义和导出内联:
export const myConst = 42;
这些都很好。但我无法定义它并导出为默认内联:
export default const myConst = 42; // nope -- syntax error!
我的问题:为什么在这方面常量与类和函数不同?它们都是可导出的,都可以作为默认值导出。为什么我不能用常量内联?
我在谷歌搜索时找到了Why Is `Export Default Const` invalid?。我相信提问者试图问我同样的问题,但有一个高度赞成、接受的答案不能回答我的问题。我不询问编译器拒绝语法的技术原因。我希望了解为什么这种语言是这样设计的。
如果有帮助,答案可能是“如果支持此语法,[事物] 会发生”或“它曾经以这种方式工作,但我们删除它是因为 [事物] 发生了”或“有关将其添加到规范中的公开讨论,请参阅 [此处]。”
如果 TypeScript 和 JavaScript 之间的区别与答案有任何关联,请澄清。
【问题讨论】:
-
I am looking to understand why the language is designed this way.很少有人设计过这种语言,因此您可能很难获得满意的答案。 -
@NicholasTower 我对此没有意见。 :)
-
因为你不需要。默认导出不是按定义命名的,您可以只使用
export default 42;。 -
也许它可以帮助一点 - stackoverflow.com/questions/36261225/…
-
我觉得你引用的其他问题讨论了这个问题,讨论的深度与讨论的深度一样。不确定您还在寻找什么答案
标签: javascript typescript es6-modules