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:
Ale jeśli usunę okno.exports.MyImplementati na przypisanie lub statment powrotnej, nie ma bardziej ostrzeżenie ...
.. 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 ...):
... 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).
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:
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
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 :-) –
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