2017-07-17 40 views
0

我想記錄一個函數寫在另一個模塊,它使用http.ClientRequest類型參數。我想是這樣的,但它不工作:在VS代碼中的JSDoc用於記錄功能與模塊的類型

/** 
* @param {ClientRequest} req 
*/ 

function setToken(req) { 
} 

我也曾嘗試@param {http.ClientRequest},但沒有奏效。

更新: 基本上我通過導入所需的模塊import http from "http";解決了這個問題。但是,我不想導入它,因爲此模塊不使用http module,但提供了輔助函數。

回答

0

它不工作,因爲它是一個自定義類型JSDoc不知道。您必須使用@typedef設置自己的定義。

/** 
* A number, or a string containing a number. 
* @typedef {(number|string)} NumberLike 
*/ 

/** 
* Set the magic number. 
* @param {NumberLike} x - The magic number. 
*/ 
function setMagicNumber(x) { 
} 

查看JSDoc typedef tag definition examples

完整的例子,我做這與JSDoc 3.5.3

/** @typedef {ClientRequest} TestReq */ 

/** 
* @param {TestReq} req 
*/ 
function setToken(req) { 
} 

JSDoc output image

+0

工作,我在那裏的NodeJS是一個名爲HTTP模塊的例子。它有http.ClientRequest接口。 –

+0

我不確切地知道你的意思,但類型取決於JavaScript類型定義(字符串,數字,對象,...)。所以JSDoc不可能知道類型「http.ClientRequest」。你需要一個自定義的類型定義。也許你可以在使用@param {Object}的時候解決這個問題,但是這會讓它變得非常普遍。 – Lukas