What syntax I should use to declare externs for cl

2019-06-13 15:26发布

问题:

I want to declare some externs for closure compiler but not know how to do it?

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

var myapi = window.myapi;

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

I am not sure how to do it for window.myapi, window.myapi.hello?

回答1:

Externs are valid javascript, but they are just type information. They should not contain definitions (or for functions only empty definitions).

Here's a start: How to Write Closure-compiler Extern Files Part 1

A couple of notes on your specific example:

  1. Don't use an anonymous wrapper. Type names must be global.
  2. Properties on the window object are the same as the namespace examples.
  3. Functions shouldn't have implementations

Here's a corrected example:

/** @const */
window.myapi = {};

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

In Closure-compiler properties on the window (global) object are seen completely differently than global variables. If you need both, you'll have to declare everything twice.

/** @const */
var myapi = {};

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