Я использую компилятор замыкания, и у меня есть два класса, которые, как я хотел бы утверждать, имеют минимальный набор методов/свойств. Для достижения этой цели, я создал интерфейс ... т.д .:Закрытие linter warning о интерфейсах
goog.scope(function() {
/**
* @interface
*/
namespace.Foo = function() {};
var Foo = namespace.Foo
/**
* @return {string}
*/
Foo.prototype.bar = function() {};
}); // goog.scope
Проблема заключается в том, что Foo.prototype.bar
не имеет return
заявления, поэтому закрытие ЛИНТЕР жалуется, даже если само закрытие полностью довольно.
Line 38, E:0218: Found @return JsDoc on function that returns nothing
Line 56, E:0218: Found @return JsDoc on function that returns nothing
Конечно, если я удалить @return
аннотаций, то закрытие несчастное и бросает предупреждения о переопределении метода и возвращая что-то несовместимое с интерфейсом. Я не хочу отключать это предупреждение, потому что это в значительной степени причина, по которой я написал интерфейс в первую очередь (чтобы убедиться, что все разработчики делают то, что им нужно делать).
Есть ли какое-нибудь магическое заклинание, которое я могу использовать, чтобы отключить это предупреждение в закрытии linter только в этом файле?
Это может быть немного странно, что ЛИНТЕР и компилятор не согласен, но главный вопрос должен быть: Почему вы реализовать метод, который должен возвращать строку но не так ли? – Bergi
@Bergi - Для этого используются интерфейсы. На самом деле, если вы попытаетесь что-то поместить в интерфейс, закрытие будет кричать на вас. В основном интерфейс (или запись с различной степенью проверки типов) описывает объект, который может передаваться различным методам, но программист должен создать конкретную реализацию, которая удовлетворяет интерфейсу. – mgilson
Да, конечно. Я предполагаю, что я просто недостаточно разбираюсь в компиляторе закрытия, этот интерфейс * декларация * слишком похож на реализацию для меня ... (а может быть, и для линтера). – Bergi