나는 @param {window.MyNamespace.MyEnum} myVar
같은 일을했지만, 컴파일러는 JSC_TYPE_PARSE_ERROR: Bad type annotation. Unknown type window.MyNamespace.MyEnum
에 대해 불평했다.Google Closure Compiler에서 유형으로 enum을 사용하는 방법이 있습니까?
enum이 @enum {number}
인 경우 @typedef
을 열거 형으로 설정해야합니까? 아니면 @param {number}
만 사용해야합니까? 나는 다른 값들이 실제로 허용되지 않기 때문에 enum 것을 선호한다.
(function (MyNamespace) {
/**
* @enum {number}
*/
MyNamespace.MyEnum = {
FOO: 1,
BAR: 2,
BAZ: 3
}
/**
* @constructor
* @param {Object} foo
*/
MyNamespace.MyClass = function (foo) {
this.foo = foo
}
/**
* @constructor
* @param {MyNamespace.MyClass} bar
*/
MyNamespace.MyOtherClass = function (bar) {
this.bar = bar
}
/**
* @param {MyNamespace.MyEnum} baz
*/
MyNamespace.MyOtherClass.prototype.someMethod = function (baz) {
}
})(window.MyNamespace = window.MyNamespace || {})
'window' 네임 스페이스를 정의하지 않은 한'window'는 형식 선언의 일부가 아니어야합니다. JQuery와 기업 문서에서 작성된 –
내가 네임 스페이스를 정의했다 : [링크] (http://enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part- 1 /)하지만 클로저 컴파일러는 유형을 찾을 수 없으므로 네임 스페이스 정의의 인수 부분을 함수로 옮겼습니다. – Aeveus
게시 한 코드에 오류가 있습니까? –