我正在嘗試使用 JSDoc 記錄我的代碼,但我無法弄清楚如何讓它識別類繼承。這是一個示例代碼:
/**
* @classdesc Represents a Layer.
* @class
* @param {object} satellite - The satellite object.
* @param {string} date - The image date.
*
* @property {Satellite} satellite - The associated satellite.
*
*/
function Layer(satellite, date){
var self = this;
self.satellite = satellite;
/**
* Compute the water index from RGB imagery.
* @function compute_wi
* @memberOf Layer
* @param {ee.ImageCollection} rgb - RGB imagery.
*/
self.compute_wi = function(rgb){
var image = rgb.median();
return image.normalizedDifference(self.satellite.ndwi_bands);
};
}
/**
* @classdesc Class representing a Layer for SAR satellites.
* @class
* @augments Layer
*/
function SarLayer(satellite, date, img_layernumber, pre_post){
Layer.call(this, satellite, date, img_layernumber, pre_post);
var self = this;
/**
* Do nothing (not used for SAR imagery).
* @function compute_wi
* @memberOf SarLayer
* @override
* @param {ee.ImageCollection} rgb - RGB imagery.
* @returns {ee.ImageCollection} RGB imagery
*/
self.compute_wi = function(rgb){
return rgb;
};
}
SarLayer.prototype = Object.create(Layer.prototype);
SarLayer.prototype.constructor = SarLayer;
在創建的 JSDoc 中,我沒有看到 SARLayer 中的 compute_wi 是來自 Layer 的重寫函式。我在 Layer 的檔案中看到屬性 Satellite,但在 SARLayer 的檔案中沒有,我怎樣才能讓它出現在那里?對于我沒有覆寫的其他方法也是如此..
這是我所期望的示例: expected
這是我得到的: 實際
是因為我用關鍵字 self 宣告了我的方法嗎?我需要使類繼承作業(需要時呼叫超類方法)。
uj5u.com熱心網友回復:
您似乎缺少@instance告訴 JSDoc 這些是實體(而非靜態)方法的型別提示。
將 應用于這@instance兩種方法似乎會產生檔案生成器的正確輸出 - 我看到一個Overrides以及一個指向基類方法的鏈接(這就是你所問的)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/537389.html
