如果我在一个文件中定义一个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');
适用于相同的两个文件。
这样做的正确方法是什么?
答案 0 :(得分:0)
是的,typedef是可共享的,但是你需要在deps系统中包含和需要的文件中的其他东西。 在使用typedef之前,我建议你阅读: http://closuretools.blogspot.co.uk/2012/02/type-checking-tips.html
答案 1 :(得分: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');