function bar(a, b) {
console.log(a + " " + b);
}
bar(1); // 성공, 두 번째 인수는 선택 사항임
bar(1, 2);
bar(1, 2, 3); // 오류, 인수의 갯수가 너무 많음
JSDoc @param을 사용하여 이 규칙에서 예외를 만들 수 있습니다.
/**
* @param {string} [somebody] - 누군가의 이름
*/
function sayHello(somebody) {
if (!somebody) {
somebody = 'John Doe';
}
console.log('Hello ' + somebody);
}
sayHello();
```javascript
/** @param {...number} args */
function sum(/* numbers */) {
var total = 0
for (var i = 0; i < arguments.length; i++) {
total += arguments[i]
}
return total
}
지원되는 JSDoc 예제
JSDoc의 지정되지 않은 타입 인수는 기본적으로 `any입니다.
/** @type{Array} */
var x = [];
x.push(1); // 성공
x.push("string"); // 성공, x는 Array 타입임
/* @type{Array.} /
var y = [];
y.push(1); // 성공
y.push("string"); // 오류, string을 number 타입에 할당할 수 없음
### `@type`
```javascript
/**
* @type {(string | boolean)}
*/
var sb;
//유니언 타입에는 괄호가 선택 사항이라는 점에 유의하세요.
/**
* @type {string | boolean}
*/
var sb;
/** @type {number[]} */
var ns;
/** @type {Array.<number>} */
var nds;
/** @type {Array<number>} */
var nas;
/** @type {{ a: string, b: number }} */
var var9;
/** @type {Function} */
var fn7;
/**
* @type {*} - 어떠한 타입이든 될 수 있음
*/
var star;
/**
* @type {?} - 식별되지 않은 타입 ('any'와 같음)
*/
var question;
개요
--checkJs
를 사용해.js
파일에서도 Typescript처럼 타입 검사 및 오류 확인이 가능합니다.JSDoc 타입
.js
파일에서는, 흔히.ts
파일처럼 타입을 추론해볼 수 있습니다.클래스 프로퍼티
.js
파일에서, 컴파일러는 클래스 본문 내부에서 할당된 프로퍼티로부터 프로퍼티들을 추론합니다.undefined
나null
이 아닐 경우, 프로퍼티의 타입은 생성자에서 주어진 타입과 동일합니다.객체 리터럴
.ts
파일에서, 변수 선언을 초기화하는 객체 리터럴은 선언에 해당 타입을 부여합니다..js
파일에선 완화됩니다@type
를 통해 검증 가능합니다.함수 매개변수
.js
파일에선 모든 함수의 매개변수는 선택적인 것으로 간주됩니다.@param
을 사용하여 이 규칙에서 예외를 만들 수 있습니다.sayHello();
지원되는 JSDoc 예제
x.push(1); // 성공 x.push("string"); // 성공, x는 Array 타입임
/* @type{Array.} /
var y = [];
y.push(1); // 성공 y.push("string"); // 오류, string을 number 타입에 할당할 수 없음
Type Cast
@param
and@returns
@template
@template
를 통해 제네릭 타입을 선언할 수 있습니다.요약
.js
도checkJs
옵션을 이용하여 타입 검사가 가능합니다.JSDoc
를 이용하여 타입을 지정할 수 있습니다..ts
를 사용하세요.