Dzięki JSDoc możesz również tworzyć niestandardowe typy za pomocą @typedef
. Używam tego dość często, więc rekwizyty / parametry, które są łańcuchami lub tablicami, odsyłają do opisu typu (na przykład string
utworzyłem typedef, który zawiera rodzime dostępne dla stringów (zobacz przykład JSDoc poniżej). Możesz zdefiniować niestandardowy typ w ten sam sposób. Dzieje się tak, ponieważ nie można używać notacji z kropką obiektu do zwracania, tak jak w przypadku @property do oznaczania tego, co jest w wyniku zwrotnym. Dlatego w przypadkach, gdy zwracasz coś w rodzaju obiektu, możesz utworzyć definicję dla tego typu (' @typedef MyObject
), a następnie @returns {myObject} Definition of myObject
.
Nie zwariowałbym jednak na tym punkcie, ponieważ typy powinny być jak najbardziej dosłowne i nie chcesz zanieczyszczać swoich typów, ale są przypadki, w których chcesz jawnie zdefiniować typ, więc możesz udokumentować, co jest w nim (dobrym przykładem jest Modernizr ... zwraca obiekt, ale nie masz jego dokumentacji, więc utwórz niestandardową definicję typu, która szczegółowo określa, co jest w tym zwracanym wyniku).
Jeśli nie musisz iść tą trasą, to jak ktoś już wspomniał, możesz określić wiele typów dla dowolnego @param, @property lub @return, używając potoku |
.
W twoim przypadku, należy również udokumentować @throws
, ponieważ jesteś rzucanie new error
: * @throws {error} Throws a true new error event when the property err is undefined or not available
.