当前位置:  开发笔记 > 编程语言 > 正文

为什么必须在ES2015中指定导出类型(let,var,const ...)?

如何解决《为什么必须在ES2015中指定导出类型(let,var,const)?》经验,为你挑选了1个好方法。

因为我读这里,ES2015可以导出var,const,let,function,classdefault.

export var myVar1 = ...;
export let myVar2 = ...;
export const MY_CONST = ...;

export function myFunc() {
    ...
}
export function* myGeneratorFunc() {
    ...
}
export class MyClass {
    ...
}

但我不明白为什么.在我的外行看来,应该有named exportsdefault exports.

您输出的类型似乎并不重要.我的意思是,当你export default,你指定类型?不,你没有,它的工作原理.此外,它还能有什么区别出口varlet?它有什么区别export const?导入模块时,无论如何它都是不可变的(AFAIK).

那么,为什么必须指定导出的类型?



1> Bergi..:

您不必指定导出的类型 - 您必须在模块中指定本地绑定的类型.

应该有命名导出和默认导出.

有:

export {localX as exportedX};
export {localX as default};

你给出的所有这些例子实际上都是shorthands,它们都声明一个局部变量并以相同的名称导出它:

var myVar1 = …;
let myVar2 = …;
const MY_CONST = …;
function myFunc() {
    …
}
function* myGeneratorFunc() {
    …
}
class MyClass {
    …
}

export {
    myVar,
    myVar2,
    MY_CONST,
    myFunc,
    myGeneratorFunc,
    myClass
};

它有什么区别export const?导入模块时,无论如何都是不可变的.

你不能你的模块中重新分配它.导出不会导出值1,它会将绑定导出到本地变量.实际上,进口不是一成不变的,它们只是不可写的.

// example.js
export var value; // this one would not work with `const`
export default function(x) {
    value = x;
}

// main.js
import write, {value} from 'example';
console.log(value); // undefined
write(42);
console.log(value); // 42

1:在这方面,默认出口有点特殊.该export default …声明确实让你直接导出一个表达式(或匿名函数/功能*/类的价值宣言),但幕后它实际上与名称模块中创建一个局部变量*default*.

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有