Làm thế nào để trả về void trong JsDoc?


81

Có cách cụ thể nào để khai báo một phương thức hoặc một hàm để trả về void trong JsDoc không? Hiện tại, tôi tin rằng đó voidlà giá trị trả về mặc định và các giá trị trả về khác phải được cung cấp cụ thể:

/**
 * @return {Integer} The identifier for ...
 */

eslint.org/docs/rules/valid-jsdoc cho biết @returns {void}Ahhh ai đó đã đề cập đến nó: stackoverflow.com/a/45450508/470749
Ryan

Câu trả lời:


93

Tôi không tin rằng bạn phải chọn từ một tập hợp các kiểu trong JsDoc ... bạn có thể sử dụng bất kỳ tên kiểu nào bạn muốn (dấu ngoặc nhọn cho biết đó là một kiểu), vì vậy bạn có thể chỉ cần làm:

@return {Void}

Mặc dù, điều này có lẽ đúng hơn đối với JavaScript:

@return {undefined}

cũng có thể là @returns {void}?
hellboy

8
@Eugene nullkhông nhất thiết phải giống nhưundefined
BadHorsie

6
@return {Void}ném cảnh báo kiểm tra mã trong IntelliJ IDE @return {undefined}@return {void}không.
Shanimal

4
nullkhông bao giờ giống như undefined. Khi một cái gì đó là null, nó vẫn được xác định nhưng không có giá trị. Không xác định là, tốt, không được xác định :-)
Magnus Eriksson

3
Thông số kỹ thuật Ecmascript liệt kê các loại ngôn ngữ. Giá trị được trả về bởi voidtoán tử là undefined. Tên của loại giá trị undefinedUndefined, mặc dù được typeof undefinedđánh giá là "undefined". Tên Voidkhông được xác định trong thông số kỹ thuật Ecmascript.
Aaron Mansheim

104

Trình biên dịch đóng cửa

Theo tài liệu của Trình biên dịch đóng cửa của Google nếu không có gì được trả lại, thì chú thích @return sẽ bị bỏ qua.

Nếu không có giá trị trả về, không sử dụng thẻ @return.

Nguồn: https://developers.google.com/closure/compiler/docs/js-for-compiler#tags

jsdoc-toolkit

Tuy nhiên, tài liệu khác cũng nói rằng returnType và returnDescription là các tham số tùy chọn.

returnType - Tùy chọn: loại giá trị trả về.

returnDescription - Tùy chọn: bất kỳ mô tả bổ sung nào.

Nguồn: https://code.google.com/p/jsdoc-toolkit/wiki/TagReturns

Tóm lược

Bạn có thể loại bỏ chú thích trả về hoặc bao gồm nó mà không có bất kỳ tham số nào.


10
Câu trả lời này thực sự tốt hơn câu trả lời được chấp nhận. Nếu hàm của bạn không trả về kết quả, bạn không nên nói nó trả về undefinedvì điều này đã tiềm ẩn trong Javascript và có thể gây nhầm lẫn cho bất kỳ ai đọc tài liệu của bạn.
Lucio Paiva

2
Không, tôi không đồng ý và nói rằng đây không phải là một ý kiến ​​hay. Khi thiếu một thứ gì đó, bạn không biết nó có cố ý hay không. Bằng cách rõ ràng về kiểu trả về ngay cả khi undefinedbạn buộc bản thân phải nêu rõ ý định của mình, cũng tốt khi đọc nó sau này. Chỉ để làm rõ, tôi không nói người ta nên bao gồm một câu lệnh JS vô dụng, tôi nói người ta nên luôn bao gồm một @returnscâu lệnh JSDoc (Tôi chống lại mã vô ích, nhưng không chống lại những nhận xét "vô dụng").
Mörre

IMO nó làm cho tinh thần để xác định một kiểu trả về của undefined nếu nó có thể là chức năng của bạn hoặc phương pháp lợi nhuận bất kỳ giá trị khác, trong trường hợp này bạn sẽ có được một cái gì đó như thế này:@returns {Array|undefined} - returns array if operation successful, otherwise returns undefined
GrayedFox

19

Nhìn vào tài liệu ESlint mà họ sử dụng @returns {void}

Nguồn: http://eslint.org/docs/rules/valid-jsdoc

Vì tôi cần cung cấp @returnscho mỗi chức năng để vượt qua các bài kiểm tra để đẩy mã cho các dự án nhất định, điều này là bắt buộc trong trường hợp của tôi.


1

Nếu bạn cần phải nói to rằng không có gì được trả lại, bạn có thể nói điều đó trong mô tả ở dạng tự do . Điều này rất hữu ích để làm rõ các tình huống mà người dùng có thể mong đợi thứ gì đó được trả lại. Tất nhiên, việc đặt tên phù hợp cho hàm và các tham số sẽ làm cho kiểu trả về mong đợi trở nên rõ ràng, nhưng không phải lúc nào cũng có thể thực hiện được.

/**
 * This is a funny function. Returns nothing.
 * @param {string} a joke.
 */
var funny = function (joke) {
  console.log(joke);
};
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.