1
В Google Closure JavaScript, я могу определить интерфейс для класса с чем-то вродеМогу ли я определить интерфейс для перечисления в Google Closure?
/**
* An object that implements this does fantastic, wonderful things.
* @interface
*/
name.space.for.project.SomeInterface = {};
/**
* Some method that does something.
* @param {number} foo
* @return {string} Some fantastic, wonderful string.
*/
name.space.for.project.SomeInterface.prototype.doSomething =
function(foo) {};
Могу ли я как-то объявить интерфейс для перечисления, но не осуществлять перечисление? А затем реализовать перечисление в отдельном файле, как обычно? Как это?
/**
* Enumerates event types.
* @enum {string}
* @implements {name.space.for.project.SomeEnum}
*/
name.space.for.project.SomeEnum = {
FOO: 1,
BAR: 2
};
Непонятно здесь. Что здесь «как обычно»? Перечисление должно быть терминальным объектом, то есть оно должно иметь только перечисленные ключи значений в качестве свойств. – John