如何同时使用 goog.provide 和 @externs?
how can I use goog.provide and @externs at the same time?
我正在尝试通过解决倾向于使我们使用 oVar["stuff"]["things"]
而不是 oVar.stuff.things
之类的缩小问题来稍微简化我们的代码
我 运行 在使用 @externs 注释的同时还使用 goog.provide 遇到了问题。如果我手动将新文件作为 --externs 传递,或者我使用 @externs 并将新文件作为 --js 传递,我已经让我的 class 以我想要的方式工作。这两个解决方案的问题是我必须为我创建的每个 "external" class 添加一个 --externs 或 --js。
一旦我尝试在 class 文件中添加 goog.provide 或 goog.module(即使不使用 goog.require 加载文件),所有外部选项我有工作停止工作。澄清一下,在这种情况下使用 goog.require 根本没有帮助。
我添加了一些伪代码来模仿我正在做的事情。基本上,我有一个函数,实现者可以调用一个不需要缩小任何参数的对象。
这是我在 class 文件中尝试做的事情:
/**
* @fileoverview
* @externs
*/
goog.provide("common.classes.newClass");
/**
*
* @constructor
*/
common.classes.newClass = function() {};
/**
* @typedef {*}
*/
common.classes.newClass.prototype.var1;
/**
* @typedef {*}
*/
common.classes.newClass.prototype.var2;
下面是我尝试在另一个文件中使用它的方式:
goog.provide("app.namespace");
goog.require("common.classes.newClass");
/**
* @param {common.classes.newClass} parameter
* @exports
*/
app.namespace.init = function(parameter)
{
// do stuff
/**
* @type {common.classes.newClass}
*/
this.passedObject = parameter;
// do other stuff
otherFunction(this.passedObject.var1);
};
我 运行 遇到的问题是,除非我使用 this.passedObject['var1'],否则 'var1' 键会被缩小。
你不能。这些用于 2 个完全独立的事物。您也不要导入 extern 或使用 goog.require
引用它。外部人员是全球性的。
要在外部声明命名空间,只需使用:
const common = {};
/** @const */ common.classes = {};
我正在尝试通过解决倾向于使我们使用 oVar["stuff"]["things"]
而不是 oVar.stuff.things
我 运行 在使用 @externs 注释的同时还使用 goog.provide 遇到了问题。如果我手动将新文件作为 --externs 传递,或者我使用 @externs 并将新文件作为 --js 传递,我已经让我的 class 以我想要的方式工作。这两个解决方案的问题是我必须为我创建的每个 "external" class 添加一个 --externs 或 --js。
一旦我尝试在 class 文件中添加 goog.provide 或 goog.module(即使不使用 goog.require 加载文件),所有外部选项我有工作停止工作。澄清一下,在这种情况下使用 goog.require 根本没有帮助。
我添加了一些伪代码来模仿我正在做的事情。基本上,我有一个函数,实现者可以调用一个不需要缩小任何参数的对象。
这是我在 class 文件中尝试做的事情:
/**
* @fileoverview
* @externs
*/
goog.provide("common.classes.newClass");
/**
*
* @constructor
*/
common.classes.newClass = function() {};
/**
* @typedef {*}
*/
common.classes.newClass.prototype.var1;
/**
* @typedef {*}
*/
common.classes.newClass.prototype.var2;
下面是我尝试在另一个文件中使用它的方式:
goog.provide("app.namespace");
goog.require("common.classes.newClass");
/**
* @param {common.classes.newClass} parameter
* @exports
*/
app.namespace.init = function(parameter)
{
// do stuff
/**
* @type {common.classes.newClass}
*/
this.passedObject = parameter;
// do other stuff
otherFunction(this.passedObject.var1);
};
我 运行 遇到的问题是,除非我使用 this.passedObject['var1'],否则 'var1' 键会被缩小。
你不能。这些用于 2 个完全独立的事物。您也不要导入 extern 或使用 goog.require
引用它。外部人员是全球性的。
要在外部声明命名空间,只需使用:
const common = {};
/** @const */ common.classes = {};