인라인 JSDoc을 사용하여 param이 선택 사항임을 나타내는 방법은 무엇입니까?


119

@param 에 대한 JSDoc 위키에 따르면 @param이 선택 사항임을 나타낼 수 있습니다.

/**
    @param {String} [name]
*/
function getPerson(name) {
}

다음을 사용하여 매개 변수를 인라인으로 나타낼 수 있습니다.

function getPerson(/**String*/ name) {
}

그리고 다음과 같이 결합 할 수 있습니다.

/**
    @param [name]
*/
function getPerson(/**String*/name) {
}

그러나 가능한 한 모든 것을 인라인으로 할 수있는 방법이 있는지 알고 싶습니다.

답변:


123

에서 공식 문서 :

선택적 매개 변수

foo라는 선택적 매개 변수.

@param {number} [foo]
// or:
@param {number=} foo

기본값이 1 인 선택적 매개 변수 foo.

@param {number} [foo=1]

7
나는 그것을 인라인으로하는 방법을 물었다. 귀하가 제공하는 예는 제 질문에서 보여준 것과 동일한 것 같습니다.
studgeek

67

좀 파고 나니 이것들도 괜찮다는 것을 알았습니다.

/**
 * @param {MyClass|undefined}
 * @param {MyClass=}
 * @param {String} [accessLevel="author"] The user accessLevel is optional.
 * @param {String} [accessLevel] The user accessLevel is optional.
 */

약간 더 시각적으로 매력적입니다. function test(/**String=*/arg) {}


9
그것들은 유효하지만 (JSDoc 도움말에 문서화되어 있음) 인라인 이 아닙니다 -내가 찾던 것입니다.
studgeek 2013

질문은 인라인 JSDoc 표기법에 관한 것입니다. 이것은 흥미로운 정보이지만, 질문에 대답하지 않습니다
켄 벨로우즈

51

Google Closure Compiler 유형 표현식을 사용하여이 작업을 수행하는 방법을 찾았습니다 . 다음과 같이 유형 뒤에 등호를 넣습니다. function test(/**String=*/arg) {}


10
WebStorm / IntellIDEA이 표기법을 지원합니다
피터 아론 전신 타이즈에게

3
예, 그래서 대답으로 표시하기에 충분한 승인을 얻은 것 같습니다.
studgeek

4
@PeterAronZentai, WebStorm / IntelliIDEA가 추가 기능을 요청한 결과 지원합니다. :). 이제 Google Closure Compiler 유형 표현식의 대부분을 지원합니다.
studgeek

1
선택적 두 번째 매개 변수에 대해 나를 위해 작동하지 않습니다.
DaveWalley 2014

1
링크를 수정하십시오. 그것은 404 페이지로 연결
chharvey

3

함수 인수에 인라인 유형 주석을 사용하고 해당 표기법에서 함수 인수를 선택 사항으로 표시하는 방법을 궁금해하는 경우, 선택적 인수에 기본값을 할당하는 것만으로도 효과가 있다는 것을 알았습니다. 기본값이되도록 undefined하려면 명시 적으로 설정해야합니다. 그렇지 않으면 인수가 옵션으로 표시되지 않습니다 (이미 선택적 인수가 앞에있는 경우에도).

function demo(
  /** @type {String} */ mandatory,
  /** @type {Number} */ optional1 = 0,
  /** @type {Number} optional2 = undefined,
)

만약 당신이 가져가 이상 demo에 IDE 둘 다 볼 수 optional1optional2현재 선택 사항으로 게재합니다. ?인수 이름 뒤에 로 표시되는 VSCode에서 (TypeScript 표기법). 제거하는 경우 = undefined에서 optional2만 볼 수 optional1물론 넌센스입니다있는 옵션을 나는 위의 단락에서 언급처럼 여기 디폴트 값은 명시 적이어야하므로.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.