我应该用什么语法为闭包编译器声明externs?

时间:2013-11-20 15:50:34

标签: google-closure-compiler

我想为闭包编译器声明一些externs,但不知道如何做?

(function(window) {
window.myapi = window.myapi || {};

var myapi = window.myapi;

myapi.hello = function() {
  window.document.write('Hello');
}
}(window));

我不知道如何为window.myapi,window.myapi.hello做这件事?

1 个答案:

答案 0 :(得分:3)

Externs是有效的javascript,但它们只是类型信息。它们不应包含定义(或仅用于函数空定义)。

这是一个开始:How to Write Closure-compiler Extern Files Part 1

关于您的具体示例的几点说明:

  1. 不要使用匿名包装器。类型名称必须是全局的。
  2. 窗口对象上的属性与命名空间示例相同。
  3. 功能不应该有实现
  4. 这是一个更正的例子:

    /** @const */
    window.myapi = {};
    
    /** @return {undefined} */
    window.myapi.hello = function() {};
    

    在闭包中,window(全局)对象的编译器属性与全局变量完全不同。如果你需要两者,你必须两次声明。

    /** @const */
    var myapi = {};
    
    /** @return {undefined} */
    myapi.hello = function() {};