使用ES6 import语句时,有没有办法防止未定义的项目?

ere*_*eit 16 javascript ecmascript-6

import {
  foobar1,
  foobar2,
  foobor3,  //typo!  this key doesn't exist in the module.

} from './module_file.js'


console.log(foobar1, foobar2, foobar3)  //EXPLODES
Run Code Online (Sandbox Code Playgroud)

我在使用新的ES6样式导入语句时犯下的最常见的愚蠢错误之一就是我在对象解构中的一个键中会出现拼写错误.我想不出一个我想要在解构赋值中想要一个值的单个实例undefined.有没有办法强制导入语句失败 - 如果我尝试导入的项目之一未定义?

即:

 import {
  doesntExistInModule  //EXPLODE NOW!  
} from './module_file.js'
Run Code Online (Sandbox Code Playgroud)

JMM*_*JMM 3

规范中的模块内容相当粗糙,但我相信在这种情况下,真正的实现将SyntaxError15.2.1.16.4 ModuleDeclarationInstantiation( ) 具体方法步骤 12.d.iii 处抛出 a 。由于没有合法的实现,我不知道您是否正在谈论一种在转译代码中执行此操作的方法,或者您是否没有意识到这种情况并且会满意地知道它会起作用最终的方式。之前有人讨论过尝试在 Babel 中实现这种检查,但据我所知,实际上还没有采取任何措施。Babel 独立编译每个模块。

另外,这不是对象解构,它只是具有类似的语法。