我如何告诉 Closure 编译器某些东西存在于单独的文件中?

How can I tell Closure compiler that something exists in a separate file?

我有一个项目,其中包括 library.jsmycode.js。我的代码包括

let x = new LibraryObject ();

我尝试了 运行 mycode.js 通过 Google Closure 抱怨

ERROR - variable LibraryObject is undeclared

当给出 -W VERBOSE 标志时。

我可以将这两个文件连接成 libraryandmycode.js,但由于某些原因我想将它们分开。我尝试在 mycode.js 中声明 LibraryObject,但随后出现 "illegal redeclared variable" 错误。

在不修改 library.js 的情况下,我可以向 mycode.js 添加一些内容来确定 LibraryObject 存在,但不重新声明它吗?

这不会在浏览器中造成任何问题,但我希望对每个文件分别进行验证,以及在将它们放在一起时进行验证。

标准是在严格解释下,无论两个脚本中的任何一个是单独解析的,还是一起解析的,都不会产生错误。

这可能吗?

这就是我的工作方式。

java -jar closure-compiler-v20160713.jar
The compiler is waiting for input via stdin.
let a= new Test ();
^Z
var a=new Test;

我绝对没有声明 Test() 。您使用的是其他版本吗?

外部文件用于向编译器提供未包含在编译中的符号的类型信息。外部文件有效 JavaScript,但仅包含类型定义 - 不要尝试使用库本身。

使用 --externs 标志将外部文件传递给编译器。

compiler projects hosts several extern files. It's also possible to write your own.

如果您正在寻找示例,jQuery externs 维护得很好。