Home ๐ŸŒ€ 3/7 TS - ์ ์ง„์ ์œผ๋กœ ์ ์šฉํ•˜๊ธฐ (2) - JSDoc์œผ๋กœ js์—์„œ type checkํ•˜๊ธฐ
Post
Cancel

๐ŸŒ€ 3/7 TS - ์ ์ง„์ ์œผ๋กœ ์ ์šฉํ•˜๊ธฐ (2) - JSDoc์œผ๋กœ js์—์„œ type checkํ•˜๊ธฐ

์ˆœ์ˆ˜ js์ฝ”๋“œ์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฃผ์„์„ ์ถ”๊ฐ€ํ•˜๋ฉด type ์ฒดํฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

1
// @ts-check

์ด๋Š” JSDoc์„ ์ด์šฉํ•˜๋ฉด ํƒ€์ž…์— ๋Œ€ํ•œ ํžŒํŠธ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค

JSDoc์ด๋ž€?

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ API ๋ฌธ์„œ ์ƒ์„ฑ๊ธฐ๋กœ, API๋ฅผ ์„ค๋ช…ํ•˜๋Š” HTML์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ์ผ๋ฐ˜ ์ฃผ์„๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฌด์‹œ๋Œ.

1 ๋ณ€์ˆ˜ํƒ€์ž…

1
2
3
4
/**
 * @type {string}
 */
let str;

2 ํ•จ์ˆ˜ํƒ€์ž…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// TypeScript syntax๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
/**
 * @type {(a:number, b: number) => number}
 */
const add = (a, b) => a + b;

// Closure syntax๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
/**
 * @type {function(number, number): number}
 */
const multiply = (a, b) => a * b;

/**
 * @param {string} p1 - A string of param
 * @param {string=} p2 - An optional param(Closure syntax)
 * @param {string} [p3] - Another optional param (JSDoc syntax)
 * @param {string} [p4="test"] - An optional param with a default value
 * @return {string} This is the result
 */
function stringsStringStrings(p1, p2, p3, p4) {
  //...
}

3 ํƒ€์ž… ์ •์˜ - ๋ณต์žกํ•œ ํƒ€์ž…์„ ์ •์˜ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
 * ํ•  ์ผ
 * @typedef {Object} Todo
 * @property {number} id - ํ• ์ผ id
 * @property {string} content - ํ• ์ผ ๋‚ด์šฉ
 * @property {boolean} completed - ํ• ์ผ ์™„๋ฃŒ ์—ฌ๋ถ€
 */

/**
 * ํ• ์ผ ๋ชฉ๋ก
 * @typedef {Todo[]}
 */
const todos = [
  { id: 1, content: "HTML", completed: false },
  { id: 2, content: "CSS", completed: true },
];
4 @callback
@typedef์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ object ํƒ€์ž… ๋Œ€์‹  ํŠน์ •ํ•œ function ํƒ€์ž…์„ ์ง€์ •ํ•œ๋‹ค.
This post is licensed under CC BY 4.0 by the author.

๐ŸŒ€ 3/7 TS - ์ ์ง„์ ์œผ๋กœ ์ ์šฉํ•˜๊ธฐ (1)

๐ŸŒ€ 3/8 TS - ์ ์ง„์ ์œผ๋กœ ์ ์šฉํ•˜๊ธฐ (3)