# ๐Ÿ“„ Item44 ~ 48


# Item44. ํƒ€์ž… ์ปค๋ฒ„๋ฆฌ์ง€๋ฅผ ์ถ”์ ํ•˜์—ฌ ํƒ€์ž… ์•ˆ์ „์„ฑ ์œ ์ง€ํ•˜๊ธฐ

  • npm์˜ type-coverage ํŒจํ‚ค์ง€๋ฅผ ํ™œ์šฉํ•˜์—ฌ any๋ฅผ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.
$ npx type-coverage
9985 / 10117 98.69%
  • ์œ„์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๋Š” ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์˜ 10,117๊ฐœ ์‹ฌ๋ฒŒ ์ค‘ 9,985๊ฐœ(98.69%)๊ฐ€ any๊ฐ€ ์•„๋‹ˆ๊ฑฐ๋‚˜ any์˜ ๋ณ„์นญ์ด ์•„๋‹Œ ํƒ€์ž…์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
$ npx type-coverage --detail
path/to/code.ts:1:10 getColumnInfo
path/to/module.ts:7:1 pt2
  • ์œ„์™€ ๊ฐ™์ด --detail ํ”Œ๋ž˜๊ทธ๋ฅผ ๋ถ™์ด๋ฉด, any ํƒ€์ž…์ด ์žˆ๋Š” ๊ณณ์„ ๋ชจ๋‘ ์ถœ๋ ฅํ•ด์ค€๋‹ค.
    • ์ด๋ฅผ ํ†ตํ•ด ๋ฏธ์ฒ˜ ๋ฐœ๊ฒฌํ•˜์ง€ ๋ชปํ•œ any์˜ ๊ทผ์›์ง€๋ฅผ ์ฐพ์„ ์ˆ˜๋„ ์žˆ๋‹ค.
  • ์„œ๋“œํŒŒํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ๋ถ€ํ„ฐ ๋น„๋กฏ๋˜๋Š” any ํƒ€์ž…์€ ๋ช‡ ๊ฐ€์ง€ ํ˜•ํƒœ๋กœ ๋“ฑ์žฅํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ฐ€์žฅ ๊ทน๋‹จ์ ์ธ ์˜ˆ๋Š” ์ „์ฒด ๋ชจ๋“ˆ์ด any ํƒ€์ž…์„ ๋ถ€์—ฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
declare module 'my-module';
  • ์œ„์™€ ๊ฐ™์€ ์„ ์–ธ์œผ๋กœ my-module์—์„œ ์–ด๋–ค ๊ฒƒ์ด๋“  ์˜ค๋ฅ˜ ์—†์ด import ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • importํ•œ ๋ชจ๋“  ์‹ฌ๋ฒŒ์€ any ํƒ€์ž…์ด๊ณ , importํ•œ ๊ฐ’์ด ์‚ฌ์šฉ๋˜๋Š” ๊ณณ๋งˆ๋‹ค any ํƒ€์ž…์„ ์–‘์‚ฐํ•˜๊ฒŒ ๋œ๋‹ค.
import { someMethod, someSymbol } from 'my-module'; // ์ •์ƒ

const pt1 = {
  x: 1,
  y: 2,
}; // ํƒ€์ž…์ด {x: number, y: number}

const pt2 = someMethod(pt1, someSymbol); // ์ •์ƒ, pt2์˜ ํƒ€์ž…์ด any
  • ์„œ๋“œํŒŒํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ๋ถ€ํ„ฐ ๋น„๋กฏ๋˜๋Š” any์˜ ๋˜ ๋‹ค๋ฅธ ํ˜•ํƒœ๋Š” ํƒ€์ž…์— ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์ด๋‹ค.
    • ์„ ์–ธ๋œ ํƒ€์ž…๊ณผ ์‹ค์ œ ๋ฐ˜ํ™˜๋œ ํƒ€์ž…์ด ๋งž์ง€ ์•Š๋Š”๋‹ค๋ฉด ์–ด์ฉ” ์ˆ˜ ์—†์ด any ๋‹จ์–ธ๋ฌธ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
    • ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜์ค‘์— ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜์–ด ํ•จ์ˆ˜์˜ ์„ ์–ธ๋ฌธ์ด ์ œ๋Œ€๋กœ ์ˆ˜์ •๋œ๋‹ค๋ฉด any๋ฅผ ์ œ๊ฑฐํ•ด์•ผ ํ•œ๋‹ค.

# ๐Ÿ“Œ ์ •๋ฆฌ

  • noImplicityAny ๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ์–ด๋„, ๋ช…์‹œ์  any ๋˜๋Š” ์„œ๋“œํŒŒํ‹ฐ ํƒ€์ž… ์„ ์–ธ(@types)์„ ํ†ตํ•ด any ํƒ€์ž…์€ ์ฝ”๋“œ ๋‚ด์— ์—ฌ์ „ํžˆ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.
  • ์ž‘์„ฑํ•œ ํ”„๋กœ๊ทธ๋žจ์˜ ํƒ€์ž…์ด ์–ผ๋งˆ๋‚˜ ์ž˜ ์„ ์–ธ๋˜์—ˆ๋Š”์ง€ ์ถ”์ ํ•ด์•ผ ํ•œ๋‹ค. ์ถ”์ ํ•จ์œผ๋กœ์จ any์˜ ์‚ฌ์šฉ์„ ์ค„์—ฌ ๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๊ณ  ํƒ€์ž… ์•ˆ์ „์„ฑ์„ ๊พธ์ค€ํžˆ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.


# Item45. devDependencies์— typescript์™€ @types ์ถ”๊ฐ€ํ•˜๊ธฐ

# (1) npm์˜ ์„ธ ๊ฐ€์ง€ ์ข…๋ฅ˜์˜ ์˜์กด์„ฑ

  • dependencies
    • ํ˜„์žฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ํฌํ•จ
    • ํ”„๋กœ์ ํŠธ์˜ ๋Ÿฐํƒ€์ž„์— lodash๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค๋ฉด ์—ฌ๊ธฐ์— ํฌํ•จ๋˜์–ด์•ผ ํ•จ
    • ํ”„๋กœ์ ํŠธ๋ฅผ npm์— ๊ณต๊ฐœํ•˜์—ฌ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค์น˜ํ•œ๋‹ค๋ฉด, dependencies์— ๋“ค์–ด ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋„ ํ•จ๊ป˜ ์„ค์น˜๋  ๊ฒƒ์ด๋‹ค.
    • ์ด๋Ÿฌํ•œ ํ˜„์ƒ์„ ์ „์ด(transitive) ์˜์กด์„ฑ์ด๋ผ๊ณ  ํ•œ๋‹ค.
  • devDependencies
    • ํ˜„์žฌ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜์ง€๋งŒ, ๋Ÿฐํƒ€์ž„์—๋Š” ํ•„์š” ์—†๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ํฌํ•จ
      • ์˜ˆ๋ฅผ ๋“ค์–ด, ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉ ์ค‘์ธ ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์—ฌ๊ธฐ์— ํฌํ•จ๋œ๋‹ค.
    • ํ”„๋กœ์ ํŠธ๋ฅผ npm์— ๊ณต๊ฐœํ•˜์—ฌ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค์น˜ํ•œ๋‹ค๋ฉด, devDependencies์— ํฌํ•จ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์€ ์ œ์™ธ๋œ๋‹ค.
  • peerDependencies
    • ๋Ÿฐํƒ€์ž„์— ํ•„์š”ํ•˜๊ธด ํ•˜์ง€๋งŒ, ์˜์กด์„ฑ์„ ์ง์ ‘ ๊ด€๋ฆฌํ•˜์ง€ ์•Š๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ํฌํ•จ
      • ๋‹จ์ ์ธ ์˜ˆ๋กœ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋“ค ์ˆ˜ ์žˆ๋‹ค.
    • jQuery์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๋‹ค์–‘ํ•œ ๋ฒ„์ „์˜ jQuery์™€ ํ˜ธํ™˜๋˜๋ฏ€๋กœ jQuery์˜ ๋ฒ„์ „์„ ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ์ง์ ‘ ์„ ํƒํ•˜์ง€ ์•Š๊ณ , ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์‚ฌ์šฉ๋˜๋Š” ์‹ค์ œ ํ”„๋กœ์ ํŠธ์—์„œ ์„ ํƒํ•˜๋„๋ก ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค

# (2) typescript ํ™˜๊ฒฝ์—์„œ npm ์˜์กด์„ฑ ๊ด€๋ฆฌ

๐Ÿ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ž์ฒด ์˜์กด์„ฑ ๊ณ ๋ ค

  • ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹œ์Šคํ…œ ๋ ˆ๋ฒจ๋กœ ์„ค์น˜ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ์ด์œ  ๋•Œ๋ฌธ์— ์ถ”์ฒœํ•˜์ง€ ์•Š๋Š”๋‹ค.
    • ํŒ€์›๋“ค ๋ชจ๋‘๊ฐ€ ํ•ญ์ƒ ๋™์ผํ•œ ๋ฒ„์ „์„ ์„ค์น˜ํ•œ๋‹ค๋Š” ๋ณด์žฅ์ด ์—†๋‹ค.
    • ํ”„๋กœ์ ํŠธ๋ฅผ ์…‹์—…ํ•  ๋•Œ ๋ณ„๋„์˜ ๋‹จ๊ณ„๊ฐ€ ์ถ”๊ฐ€๋œ๋‹ค.
  • ๋”ฐ๋ผ์„œ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹œ์Šคํ…œ ๋ ˆ๋ฒจ๋กœ ์„ค์น˜ํ•˜๊ธฐ๋ณด๋‹ค๋Š” devDependencies์— ๋„ฃ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
  • ์—ฌ๊ธฐ์— ํฌํ•จ๋œ๋‹ค๋ฉด npm install์„ ์‹คํ–‰ํ•  ๋•Œ ํŒ€์›๋“ค ๋ชจ๋‘ ํ•ญ์ƒ ์ •ํ™•ํ•œ ๋ฒ„์ „์˜ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ ํƒ€์ž… ์˜์กด์„ฑ(@types)์„ ๊ณ ๋ ค

  • ์‚ฌ์šฉํ•˜๋ ค๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ํƒ€์ž… ์„ ์–ธ์ด ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์•„๋„, DefinitelyTyped์—์„œ ํƒ€์ž… ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.
  • DefinitelyTyped์˜ ํƒ€์ž… ์ •์˜๋“ค์€ npm ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์˜ @types ์Šค์ฝ”ํ”„์— ๊ณต๊ฐœ๋œ๋‹ค.
  • ์ฐธ๊ณ ๋กœ, @types ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ํƒ€์ž… ์ •๋ณด๋งŒ ํฌํ•จํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๊ตฌํ˜„์ฒด๋Š” ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ์›๋ณธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž์ฒด๊ฐ€ dependencies์— ์žˆ๋”๋ผ๋„ @types ์˜์กด์„ฑ์€ devDependencies์— ์žˆ์–ด์•ผ ํ•œ๋‹ค.
{
    "devDependencies": {
        "@types/react": "^16.8.19",
        "typescript": "^3.5.3"
    },
    "dependencies": {
        "react": "^16.8.6"
    }
}
  • ์œ„ ์˜ˆ์ œ๋Š” ๋Ÿฐํƒ€์ž„์— @types/react์™€ typescript์— ์˜์กดํ•˜์ง€ ์•Š๊ฒ ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
  • ๋งŒ์ผ ๋Ÿฐํƒ€์ž„์— @types๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋ผ๋ฉด ๋ณ„๋„์˜ ์ž‘์—…์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋‹ค.

# Item46. ํƒ€์ž… ์„ ์–ธ๊ณผ ๊ด€๋ จ๋œ ์„ธ ๊ฐ€์ง€ ๋ฒ„์ „ ์ดํ•ดํ•˜๊ธฐ

# (1) ์‹ค์ œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํƒ€์ž… ์ •๋ณด์˜ ๋ฒ„์ „์ด ๋ณ„๋„๋กœ ๊ด€๋ฆฌ๋˜๋Š” ๋ฐฉ์‹์˜ ๋ฌธ์ œ์ 

  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์—…๋ฐ์ดํŠธํ–ˆ์ง€๋งŒ ์‹ค์ˆ˜๋กœ ํƒ€์ž… ์„ ์–ธ์€ ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ
    • ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•  ํƒ€์ž… ์„ ์–ธ์˜ ๋ฒ„์ „์ด ์•„์ง ์ค€๋น„๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ณด๊ฐ• ๊ธฐ๋ฒ•์œผ๋กœ ์‚ฌ์šฉํ•˜๋ ค๋Š” ์ƒˆ ํ•จ์ˆ˜์™€ ๋ฉ”์„œ๋“œ์˜ ํƒ€์ž… ์ •๋ณด๋ฅผ ํ”„๋กœ์ ํŠธ ์ž์ฒด์— ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ํƒ€์ž… ์„ ์–ธ์˜ ์—…๋ฐ์ดํŠธ๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•˜๊ณ  ๊ณต๊ฐœํ•˜์—ฌ ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๊ธฐ์—ฌํ•œ๋‹ค.
  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ณด๋‹ค ํƒ€์ž… ์„ ์–ธ์˜ ๋ฒ„์ „์ด ์ตœ์‹ ์ธ ๊ฒฝ์šฐ
    • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํƒ€์ž… ์„ ์–ธ์˜ ๋ฒ„์ „์ด ๋งž๋„๋ก ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „์„ ์˜ฌ๋ฆฌ๊ฑฐ๋‚˜ ํƒ€์ž… ์„ ์–ธ์˜ ๋ฒ„์ „์„ ๋‚ด๋ฆฐ๋‹ค.
  • ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๋ฒ„์ „๋ณด๋‹ค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ํ•„์š”๋กœ ํ•˜๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๋ฒ„์ „์ด ์ตœ์‹ ์ธ ๊ฒฝ์šฐ
    • ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์˜ ์ตœ์‹  ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜์ž.
  • @types ์˜์กด์„ฑ์ด ์ค‘๋ณต๋  ์ˆ˜ ์žˆ๋‹ค.

# (2) ๋ฒˆ๋“ค๋ง ๋ฐฉ์‹์˜ ๋ฌธ์ œ์ 

  • ๋ฒˆ๋“ค๋œ ํƒ€์ž… ์„ ์–ธ์— ๋ณด๊ฐ• ๊ธฐ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†๋Š” ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ, ๋˜๋Š” ๊ณต๊ฐœ ์‹œ์ ์—๋Š” ์ž˜ ๋™์ž‘ํ–ˆ์ง€๋งŒ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๋ฒ„์ „์ด ์˜ฌ๋ผ๊ฐ€๋ฉด์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ์— ๋ฌธ์ œ๊ฐ€ ๋œ๋‹ค.
  • ํ”„๋กœ์ ํŠธ ๋‚ด์˜ ํƒ€์ž… ์„ ์–ธ์ด ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํƒ€์ž… ์„ ์–ธ์— ์˜์กดํ•œ๋‹ค๋ฉด ๋ฌธ์ œ๊ฐ€ ๋œ๋‹ค.
  • ํ”„๋กœ์ ํŠธ์˜ ๊ณผ๊ฑฐ ๋ฒ„์ „์— ์žˆ๋Š” ํƒ€์ž… ์„ ์–ธ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ๊ณผ๊ฑฐ ๋ฒ„์ „์„ ๋Œ์•„๊ฐ€์„œ ํŒจ์น˜ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค.
  • ํƒ€์ž… ์„ ์–ธ์˜ ํŒจ์น˜ ์—…๋ฐ์ดํŠธ๋ฅผ ์ž์ฃผ ํ•˜๊ธฐ ์–ด๋ ต๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.

# ๐Ÿ“Œ ์ •๋ฆฌ

  • ํƒ€์ž… ์„ ์–ธ์„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ํฌํ•จํ•˜๋Š” ๊ฒƒ๊ณผ DefinitelyTyped์— ๊ณต๊ฐœํ•˜๋Š” ๊ฒƒ ์‚ฌ์ด์˜ ์žฅ๋‹จ์ ์„ ์ดํ•ดํ•ด์•ผ ํ•œ๋‹ค.
  • ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘์„ฑ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ผ๋ฉด ํƒ€์ž… ์„ ์–ธ์„ ์ž์ฒด์ ์œผ๋กœ ํฌํ•จํ•˜๊ณ , ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘์„ฑ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ผ๋ฉด ํƒ€์ž… ์„ ์–ธ์„ DefinitelyTyped์— ๊ณต๊ฐœํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.


# Item47. ๊ณต๊ฐœ API์— ๋“ฑ์žฅํ•˜๋Š” ๋ชจ๋“  ํƒ€์ž…์„ ์ต์ŠคํฌํŠธํ•˜๊ธฐ

  • ๊ณต๊ฐœ ๋ฉ”์„œ๋“œ์— ๋“ฑ์žฅํ•œ ์–ด๋–ค ํ˜•ํƒœ์˜ ํƒ€์ž…์ด๋“  ์ต์ŠคํฌํŠธํ•˜์ž.
    • ์–ด์ฐจํ”ผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ์ž๊ฐ€ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์ต์ŠคํฌํŠธํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

# Item48. API ์ฃผ์„์— TSDoc ์‚ฌ์šฉํ•˜๊ธฐ

  • ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ๋ฌธ์„œ๋ผ๋ฉด JSDoc ์Šคํƒ€์ผ์˜ ์ฃผ์„์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
    • ์™œ๋ƒํ•˜๋ฉด ๋Œ€๋ถ€๋ถ„์˜ ํŽธ์ง‘๊ธฐ๋Š” ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” ๊ณณ์—์„œ ํ•จ์ˆ˜์— ๋ถ™์–ด ์žˆ๋Š” JSDoc ์Šคํƒ€์ผ์˜ ์ฃผ์„์„ ํˆดํŒ์œผ๋กœ ํ‘œ์‹œํ•ด ์ฃผ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  • ์ฃผ์„์„ ์ˆ˜ํ•„์ฒ˜๋Ÿผ ์žฅํ™ฉํ•˜๊ฒŒ ์“ฐ์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.
    • ํ›Œ๋ฅญํ•œ ์ฃผ์„์€ ๊ฐ„๋‹จํžˆ ์š”์ ๋งŒ ์–ธ๊ธ‰ํ•œ๋‹ค.
  • JSDoc์—๋Š” ํƒ€์ž… ์ •๋ณด๋ฅผ ๋ช…์‹œํ•˜๋Š” ๊ทœ์น™(@param {string} name ...)์ด ์žˆ์ง€๋งŒ, ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ํƒ€์ž… ์ •๋ณด๊ฐ€ ์ฝ”๋“œ์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— TSDoc์—์„œ๋Š” ํƒ€์ž… ์ •๋ณด๋ฅผ ๋ช…์‹œํ•˜๋ฉด ์•ˆ ๋œ๋‹ค.