0

如果我在一个文件中定义 typedef,例如:

/**
 * @typedef {{
 *   prop1: string,
 *   prop2: number
 * }}
 */
myClass.typedef;

我可以跨文件共享吗?我不想在每个文件中都声明相同的 typedef。

我试图goog.provide('myClass.typedef');在定义它goog.require('myClass.typedef');的文件和需要使用它的另一个文件中做。但我收到一个错误“goog.require 找不到 myClass.typedef”。我相信提供/要求一般都在工作,goog.provide('myClass');并且goog.require('myClass');正在为相同的两个文件工作。

这样做的正确方法是什么?

4

2 回答 2

0

你只能 goog.require 已经过 goog.provide-ed 的东西。

goog.require 设置了类型的类,或者创建另一个类,例如 MyClassTypes 并在其上设置类型,例如 goog.provide('MyClass');

MyClass = function () {};

/**
 * @typedef {{
 *   prop1: string,
 *   prop2: number
 * }}
 */
MyClass.type1;

或者

goog.provide('MyClassTypes');

MyClassTypes = function () {};

/**
 * @typedef {{
 *   prop1: string,
 *   prop2: number
 * }}
 */
MyClassTypes.type1;

在需要 typedef 的文件中...

goog.require('MyClass');

或者

goog.require('MyClassTypes');
于 2013-05-14T00:34:22.170 回答
0

是的,typedef 是可共享的,但您需要在文件中包含 deps 系统中包含并需要的其他内容。在您使用 typedefs 之前,我建议您阅读以下内容: http ://closuretools.blogspot.co.uk/2012/02/type-checking-tips.html

于 2013-04-21T12:56:24.323 回答