【发布时间】:2014-05-19 00:51:06
【问题描述】:
当我使用 Google 闭包编译器增强我的 JavaScript 代码时,我遇到了一个我没有看到我喜欢的答案的问题。
我有一个包含 4 个函数的简单类:
open: function(settings) { ... },
close: function(settings) { ... },
hide: function(settings) { ... },
show: function(settings) { ... }
如您所见,所有函数都采用名为 settings 的对象。我可以使用强类型定义轻松声明设置,例如:
/**
* @param {{p1: string, p2: number, p3: function(string)}} settings The settings.
*/
open: function(settings) { ... };
这行得通,只有我需要为每个打开、关闭、隐藏和显示函数复制/粘贴 @param 定义。所以如果我添加一个参数,我要确保我更新了所有 4 个函数!
有没有一种方法可以声明一个类型,然后多次重用它,而不必声明一个实际的 JavaScript 对象?大概是这样的吧?
/**
* @deftype {{...}} some_name
*/
或者您会将其作为外部定义执行,以便至少执行环境看不到该定义?
附:有问题的对象从不保存设置。它使用该结构 来保存它生成的数据(例如标识符)并了解用户希望不同功能做什么。每个调用者可以有一组不同的设置,并且对象本身仍然可以像单例一样运行(我只需要对象的一个实例来管理任意数量的 windows)。
【问题讨论】:
标签: javascript types google-closure-compiler