2014-11-13 18 views
5

Jestem bardzo nowy w JSDoc, a ja wypróbowuję Webstorm, więc jestem również bardzo nowy w serwisie Webstorm.Ostrzeżenie dotyczące implementacji interfejsu Webstorm przy użyciu JSDoc

mam z jednej strony interfejs zadeklarowane w ten sposób:

/** @interface */ 
function IInterface(){} 
IInterface.prototype.myMethod = function(){}; 

Na innej strony, Zajmuję się tworzeniem moduł, w którym jestem, wdrażającego ten interfejs:

window.exports.MyImplementation = (function(){ 
    "use strict"; 

    /** 
    * 
    * @constructor 
    * @implements {IInterface} 
    */ 
    function MyImplementation(){} 
    MyImplementation.prototype.myMethod = function(){ 
     // my implementation here 
    }; 

    return MyImplementation; 
})(); 

Problem mam jest to, że implementacja najwyraźniej nie jest rozpoznawana: Not implemented warning screen shot

Ale jeśli usunę okno.exports.MyImplementati na przypisanie lub statment powrotnej, nie ma bardziej ostrzeżenie ...

enter image description here

.. ale chcę wrócić i zapisać mój typ z mojego modułu!

Czy jest coś jestem brakujące lub robi źle ...

Edit:

Wystarczy przynieść trochę więcej zamieszania do mojego problemu, byłem rozważa wykorzystanie „pełną adnotację” deklaracja interfejs (Jeśli to możliwe, jestem tutaj eksperymenty ...):

enter image description here

... ale w tym przypadku, można zauważyć, że „ja "symbol zniknął z lewej strony i jeśli metoda nie jest zaimplementowana, nie mam żadnego ostrzeżenia. ALE rozpoznawany jest typ IIinterface.

Edycja: Myślę, że po prostu zrozumiałem coś podczas eksperymentowania z innymi materiałami jsDoc. Ostrzeżenie jest generowane, ponieważ sprawdzanie implementacji odbywa się w window.exports.MyImplementation. Ale nie ma bezpośredniego przypisania implementującego ten obiekt w kodzie. I dlatego ostrzeżenie jest wyłączone, gdy usuwam instrukcję return lub przypisanie "exports.MyImplementation".

.. w związku z tym nie jestem pewien, czy można to uznać za błąd, może to być wzorzec użyty dla mojego modułu, który nie pasuje do wzorca oczekiwanego przez WebStorm, a być może także przez samego JSdoc .... .. Jeśli ktoś, kto ma doświadczenie w JSDoc i Webstorm mógł potwierdzić .....

Kolejna edycja: (tu znaczący krok w zrozumieniu JSDoc myślę)

adnotacje zostały przeniesione na ukierunkowane pole i ... tadaaa (zwróć uwagę na "I", które wciąż tutaj wskazuje, że interfejs faktycznie implementuje).

enter image description here

Moje wyjaśnienie: Nie może być logika .... ale szczerze, że ja naprawdę nie wiem, czy to ma znaczenie: jak pole udokumentowane zostaną wyeksportowane w „eksporcie.MyImplementation "na samym końcu, a to jest oczywiste, że adnotacja jest tutaj bardziej przydatna niż w prywatnej obudowie, WebStorm wykrył eksport do" exports.MyImplementation ", więc czeka na dokumentację na nim ...

Czy to ma sens? ...

a inny zmienił (znowu) dochodzenie, wyjaśniającego.

Znalazłem całkiem inne rozwiązanie, które pozwala dokumentacji, kompletację, walidacji i bez ostrzeżenia, co wydaje się ja lepsze rozwiązanie do eksportu modułu: enter image description here

+0

Chyba dlatego, że deklaracja 'MyImplementation' jest technicznie„gotowy”w wierszu 66 bez realizacji wszystkich niezbędnych funkcji interfejsu. Przypuszczam, że musisz zintegrować implementację metody z deklaracją 'MyImplementation', a nie dodawać jej później do prototypu. – kasoban

+0

Dzięki za twoją sugestię kasoban, ale implementacja w ciele niczego nie zmienia. Co więcej, naprawdę chcę go wdrożyć za pomocą prototypowania. Idealnie, gdyby istniało rozwiązanie zmieniające adnotacje, idealnie pasowałoby do potrzeb :-) –

+0

Hmm, o ile rozumiem dokumentację Twój kod powinien być w porządku, pomijając brakujące średniki na końcu linii 66 i linii 55. Może to w jakiś sposób wprawia w zakłopotanie inspektora? – kasoban

Odpowiedz

1

jest to błąd w uzasadnieniu JSDoc WebStorm, proszę głosować na WEB-14202

+0

OK, wydaje się to być naprawdę dobrą odpowiedzią: kiedy próbujesz wykonać implementację z modułu, ale bez prefiksu przestrzeni nazw, działa to nawet wtedy, gdy obiekt docelowy jest nieprawidłowy ....... Dzięki za aktualizację bugtrackera –

+0

Według moich dalszych badań, jestem coraz mniej przekonany, że może to być błąd –

Powiązane problemy