JavaScript 객체가 Google Closure inheritance mechanism을 사용하는 인터페이스 구현인지 어떻게 테스트 할 수 있습니까?Google 클로저 클래스 프레임 워크에서 객체가 인터페이스 구현인지 테스트합니다.
나는 작동하지 않았다 new my.Dog()
및 object instanceof my.Animal
통해 생성 된 오브젝트의 my.Animal
의 힌트를 찾을 수 없습니다. 인터페이스에 대한 유일한 정보는 자식 클래스에 메서드를 구현하는 것을 잊어 버리는 경우 컴파일러 오류입니다. 내가 찾은
/**
* @interface
*/
my.Animal = function() {};
/**
* Does something.
* @return {string}
*/
my.Animal.prototype.doSomething;
/**
* @constructor
* @implements {my.Animal}
*/
my.Dog = function() {};
/** @inheritDoc */
my.Dog.prototype.doSomething() = function {
return "something";
}
var dog = new my.Dog();
console.log(dog instanceof my.Animal); // returns false
방법 중 하나는 너무 많은 측면에서 나쁜 불구하고, 인터페이스의 속성에 대한 약 테스트하는 것입니다 :
console.log(!!dog.doSomething); // returns true
나는 downvoted하기 전에 뭐가 잘못 됐는지에 대한 의견을 듣고 싶습니다. –