2014-05-21 1 views
0

Скажем, у меня есть массив строк.Тип JSDoc, равный члену массива

/** @type Array.<string> */ 
var possibleValues = ['a','b','c','d']; 

У меня есть функция, которая принимает строку, но я только хочу, чтобы это было равно одному из членов possibleValues.

/** 
* It does nothing. 
* @param {string} input One of the members of `possibleValues`. 
* @returns {string} Same as your input, useless... or is it? 
*/ 
function nothing(input) { return input; } 

Есть ли способ в JSDoc 3 я могу точно установить тип параметра input к одному из значений possibleValues?

Желательно, чтобы я хотел ссылаться на исходный массив, а не просто перечислять его членов в комментарии, поскольку я, вероятно, его повторно использую, и он может быть изменен позже.

+0

Я предполагаю, что на основе вашей формулировки, что массив не изменяется во время выполнения (в противном случае я бы не ожидал, что ты уже в «список своих членов» поскольку статический список значений будет вводить в заблуждение), но я не уверен на 100%, что я прав. – Louis

+0

@Louis Он не меняется во время выполнения, _ «подлежит изменению». Я имею в виду в будущих версиях приложения. –

+0

Может быть, тег '@ typedef' (http://usejsdoc.org/tags-typedef.html) может помочь вам в его ссылке. – krampstudio

ответ

1

Я хотел бы использовать @enum для этого:

/** 
* @readonly 
* @enum {string} 
*/ 
var possibleValues = { 
    A: 'a', 
    B: 'b', 
    C: 'c', 
    D: 'd' 
}; 

/** 
* It does nothing. 
* @param {possibleValues} input Something descriptive... 
* @returns {string} Same as your input, useless... or is it? 
*/ 
function nothing(input) { return input; }