2017-12-20 23 views
2

JavaScript에 첫 번째 문자가 인 성가신 함수 중 하나를 문서화하려고합니다. express문서 첫 번째 매개 변수가있는 JavaScript 문서

function use(path, callback) // path is optional 

에서 함수 .use() 같은

뭔가 내가 작동 뭔가를 찾기 위해 노력하고, 이상적으로 몹시 추악하지거야.

실제 코드 서명에 대한 나의 취향이 될 것이다 : 나는 두 @param 라인을 사용하려고하면, 나는이에 호통받을 수 있도록

이 경우
function use(...args) { 
    const [callback, path] = args.reverse(); 
} 

, 나는 두 개의 매개 변수가 없습니다 JSDoc 블록 : 목적과 장소의 매개 변수를 넣어 대해 다른 패턴을 사용 나는이 매개 변수를 사용하는 경우 callbackString하지 않기 때문에

/** 
* @param {String=} path 
* @param {Function} callback 
*/ 
function use(...args) // mismatched parameters 

, 나는 (WebStorm에 의해) 소리 쳤다 얻을 :

/** 
* @param {String=} path 
* @param {Function} callback 
*/ 
function use(path, callback) { 
    if (typeof path == 'function') { 
    callback = path; // yelled at because callback can't be a string 
    path = undefined; 
    } 
} 

나는이 문제에 대해 논란을 벌이는 많은 사람들과 오래된 것들을 많이 발견했지만 분명한 대답은 찾지 못했다. 게시물이 오래되었고 많은 일이 생겨서 새로운 것을 묻고 싶었습니다. 문서를 작성하여 모든 것이 행복해 지도록 (또는 적어도 WebStorm에서) 또는 선택적으로 첫 번째 매개 변수를 허용하는 새로운 ES # 구문이 있는지 (예 : 적절한 자동 완성을 생성 할 수 있습니까?)

+0

여기가 flow 또는 typescript로 바뀝니다.) – vzwick

+2

또는이 구기 역방향 선택적 매개 변수 패턴을 사용할 때 신나기를 시작하기 만하면됩니다. 나는 바닐라 JS를 좋아하지만이 패턴을 대중화시킨 사람은 ... 내가 좋아하는 사람이 아닙니다. = p – samanime

+0

세미 관련 참고 사항 : http://usejsdoc.org/tags-callback.html – vzwick

답변

1
@param {(String=|Function=)} path 

입니다.

+0

나는 이것에 대해 잘 알고 있으며, 내가 얻을 수있는 가장 가까운 것일 수도있다. 그러나 그것은 오, 아주 못생긴 것이다. 그런 다음 "함수 인 경우 실제로 콜백입니다"라고 설명해야합니다. – samanime

+0

그래, 따라서'@ 콜백 (@ callback) '은 물건을 조금 더 명시 적으로 만듭니다. 또한 두 번째 매개 변수를 선택 사항으로 표시하는 것은 아마도 약간의 힌트를 제공 할 것입니다. 나는 완전히 모로이긴하지만 전적으로 동의한다. – vzwick