Typescript: TypeScript ์›น์‚ฌ์ดํŠธ ๋ฐ ๋ฌธ์„œ์—์„œ ๋งˆ์Œ์— ๋“ค์ง€ ์•Š๋Š” ์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์— ๋งŒ๋“  2019๋…„ 06์›” 19์ผ  ยท  55์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: microsoft/TypeScript

TypeScript ์›น์‚ฌ์ดํŠธ ๋ฐ ๋ฌธ์„œ์—์„œ ๋งˆ์Œ์— ๋“ค์ง€ ์•Š๋Š” ์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์—ฌ๋Ÿฌ๋ถ„, Microsoft์˜ TypeScript ํŒ€์€ ๊ฐœ์ •๋œ ํ•ธ๋“œ๋ถ ๊ณผ ์ผ์น˜ํ•˜๋„๋ก ์›น ์‚ฌ์ดํŠธ๋ฅผ ์™„์ „ํžˆ ์žฌ๊ณ ํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค. ํŒ€์€ ์‚ฌ์ดํŠธ์˜ ํ˜„์žฌ ๊ฒฐํ•จ๊ณผ ๊ฐœ์„ ํ•˜๊ณ  ์‹ถ์€ ๋ถ€๋ถ„์— ๋Œ€ํ•ด ๋งŽ์€ ์•„์ด๋””์–ด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์•„์ด๋””์–ด๋ฅผ ์ œ์•ˆํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์‚ฌ๋žŒ๋“ค์ด ์ด ๋ฌธ์ œ์— ๋‹ตํ•  ์ˆ˜ ์žˆ๋Š” https://github.com/react-native-community/discussions-and-proposals/issues/64 ์˜ React Native ํŒ€์—์„œ ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ํ† ๋ก ์— ์ž˜ ์ž‘๋™ํ•˜๋Š” ํ˜•์‹์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋Œ“๊ธ€๋‹น ํ•˜๋‚˜์˜ ์•„์ด๋””์–ด๋กœ

๋‹น์‹ ์€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์— ๋Œ€ํ•œ ๊ฒ€์ƒ‰ ๋ฐ ํŽธ์˜์„ฑ์˜ ๋ถ„๋ฅ˜์— ๋„์›€์ดํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ํƒœ๊ทธ๋ฅผ ์ถ”๊ฐ€ ์›น ์‚ฌ์ดํŠธ, ๋ฌธ์„œ, ์ž์›, ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ ๋‹น 1 ์ฝ”๋ฉ˜ํŠธ, ๋†€์ดํ„ฐ ๋“ฑ์œผ๋กœ ์‘๋‹ต ๋งˆ์‹ญ์‹œ์˜ค. ๊ธฐ์กด ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋งํฌ๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ทธ๊ฒƒ๋„ ๋งค์šฐ ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ด๋ฏธ ๊ท€ํ•˜์˜ ์•„์ด๋””์–ด๋ฅผ ์ œ์•ˆํ•œ ๊ฒฝ์šฐ ์ด๋ชจํ‹ฐ์ฝ˜ ๋ฐ˜์‘์„ ์‚ฌ์šฉํ•˜์—ฌ +1ํ•˜์‹ญ์‹œ์˜ค. ์ค‘๋ณต ๋ฐ ์ฃผ์ œ์™€ ๋‹ค๋ฅธ ๋‹ต๊ธ€์€ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค. ์ฃผ์ œ์— ๋” ๋งŽ์€ ๊ฒƒ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ฒจ๋ถ€๋œ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๊ฑฐ๊ธฐ์— ๋” ๋งŽ์€ ํ”ผ๋“œ๋ฐฑ์„ ๋‚จ๊ฒจ์ฃผ์„ธ์š”.

TypeScript ์–ธ์–ด ์ž์ฒด์— ๋Œ€ํ•œ ํ† ๋ก ์— ์ด ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉ ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๋ชจ๋“  ๋ฌธ์ œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ–‰๋™ ๊ฐ•๋ น์„ ์ค€์ˆ˜ํ•˜์‹ญ์‹œ์˜ค. ์šฐ๋ฆฌ๋Š” ๋ชจ๋‘ ๊ฐœ์„ ์„ ์›ํ•ฉ๋‹ˆ๋‹ค.

ํ…œํ”Œ๋ฆฟ - ์ž์œ ๋กญ๊ฒŒ ๋ณต์‚ฌํ•˜์—ฌ ๋ถ™์—ฌ๋„ฃ๊ธฐ

### [title]

[message]

Tags: `[tags]`

์˜ˆ๋ฅผ ๋“ค์–ด

๋‚ด ๊ฒƒ ์ค‘ ํ•˜๋‚˜:


์›น์‚ฌ์ดํŠธ๋Š” ํ์‡„ ์†Œ์Šค์ž…๋‹ˆ๋‹ค

์ˆ˜์ • ๋ฐ ๊ฐœ์„ ์— ๊ธฐ์—ฌํ•˜๊ณ  ์‹ถ์ง€๋งŒ ๋Šฅ๋ ฅ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์—
repo๊ฐ€ โ€‹โ€‹๋น„๊ณต๊ฐœ์ธ ๋™์•ˆ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด

ํƒœ๊ทธ: oss


Discussion

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋ฌธ์„œ์— ๋Œ€ํ•œ ๊ฒ€์ƒ‰์ด ์—†์Šต๋‹ˆ๋‹ค

๋‚˜๋Š” ์ข…์ข… ์ฃผ์š” ๋ฌธ์„œ๋ฅผ ์‚ฌ์‹ค์˜ ์†Œ์Šค๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค, ์˜ˆ๋ฅผ ๋“ค์–ด React ๋ฌธ์„œ์—์„œ์™€ ๊ฐ™์ด DocSearch๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค typescript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌด์–ธ๊ฐ€๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ธํ„ฐ๋„ท ๊ฒ€์ƒ‰์— ์˜์กดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํƒœ๊ทธ: search , exploration

๋ชจ๋“  55 ๋Œ“๊ธ€

"์œ ํ‹ธ๋ฆฌํ‹ฐ ์œ ํ˜•" ํŽ˜์ด์ง€๊ฐ€ ์ตœ์‹  ์ƒํƒœ๊ฐ€ ์•„๋‹˜

์ƒˆ๋กœ์šด ์œ ํ‹ธ๋ฆฌํ‹ฐ ์œ ํ˜•์€ ์ข…์ข… ๋ˆ„๋ฝ๋˜๊ฑฐ๋‚˜ ํ•ธ๋“œ๋ถ์˜ "์œ ํ‹ธ๋ฆฌํ‹ฐ ์œ ํ˜•" ํŽ˜์ด์ง€์— ์ถ”๊ฐ€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์˜ˆ: Parameters<T> ). ๋‚˜๋Š” ์ข…์ข… ํ•ธ๋“œ๋ถ ๋Œ€์‹  lib.es5.d.ts ๊ฒ€์ƒ‰์— ์˜์กดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํƒœ๊ทธ: docs

๊ณต์‹ TypeScript Playground๋Š” ์˜คํ”ˆ ์†Œ์Šค ๋Œ€์•ˆ๋งŒํผ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

https://typescript-play.js.org ๋Š” ๊ณต์‹ ๋ฒ„์ „๋ณด๋‹ค ๋” ๋‚˜์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ TypeScript๋ฅผ ๋‹ค๋ฃจ๊ณ , ๋” ํฐ ํ…์ŠคํŠธ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ชจ๋“  ์ปดํŒŒ์ผ๋Ÿฌ ํ”Œ๋ž˜๊ทธ๋ฅผ ์ง€์›ํ•˜๊ณ  ์—„๊ฒฉ ๋ชจ๋“œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ผœ์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

ํƒœ๊ทธ: playground

๋ฆด๋ฆฌ์Šค ์ •๋ณด์— ๋Œ€ํ•œ ์ƒ‰์ธ ํŽ˜์ด์ง€ ๋ถ€์กฑ

https://www.typescriptlang.org/docs/handbook/release-notes URL ์•„๋ž˜์— ๋ชจ๋“  ๊ณผ๊ฑฐ ๋ฆด๋ฆฌ์Šค ์ •๋ณด๋ฅผ ๋‚˜์—ดํ•˜๋Š” ์ƒ‰์ธ โ€‹โ€‹ํŽ˜์ด์ง€๊ฐ€ ์žˆ์—ˆ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด TypeScript์˜ ๊ณผ๊ฑฐ ๋ฆด๋ฆฌ์Šค ์—…๋ฐ์ดํŠธ๋ฅผ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํƒœ๊ทธ: docs , release notes

์œ ํ˜• ์ด๋ฆ„์— ๋Œ€ํ•œ ์šฉ์–ด์ง‘์ด ์—†์Šต๋‹ˆ๋‹ค.

const a: "foo" | "bar" ์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์ „๋‹ฌํ–ˆ๋‹ค๋ฉด ์ด๊ฒƒ์„ Union Type์ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ฒƒ์„ ๋ชจ๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋งค์šฐ ๋‚ฎ์€ ๋ง‰๋Œ€์ด์ง€๋งŒ, ์‹ค์กด์ /์กฐ๊ฑด๋ถ€/๋งคํ•‘๋œ/๊ธฐํƒ€ ์œ ํ˜•์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ธฐ ์‹œ์ž‘ํ•  ๋•Œ ์ •์˜๋ฅผ ์‹œ๋„ํ•˜์ง€๋งŒ ๊ฐœ์š”๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋„๋ก ๊นŠ์ด ๋ฌธ์„œํ™”ํ•˜์ง€ ์•Š๋Š” ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด ์–ธ์–ด์— ๋Œ€ํ•œ ๋ชจ๋“  ๋ถ„๋ฅ˜

ํƒœ๊ทธ: types , handbook

๋น„๊ธฐ์ˆ ์ ์ธ ์‚ฌ๋žŒ๋“ค๊ณผ ๊ณต์œ ํ•  ํŽ˜์ด์ง€๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค

์ด๊ฒƒ์€ ์ฒ˜์Œ์— TypeScript ์‚ฌ์šฉ์˜ ๊ฐ€์น˜๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์—”์ง€๋‹ˆ์–ด๋ง ์™ธ๋ถ€์˜ ์‚ฌ๋žŒ๋“ค(PM, ๋น„๊ธฐ์ˆ ์  ๊ด€๋ฆฌ์ž๋ฅผ ์ƒ๊ฐํ•ด ๋ณด์„ธ์š”)์„ ์„ค๋“ํ•˜๋Š” ๋ฐ ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ๋‚˜๋Š” ์ด๊ฒƒ์„ ์ง์ ‘ ์ž‘์„ฑ ํ–ˆ์ง€๋งŒ ๊ณต์‹์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

ํƒœ๊ทธ: guides

ํ™•์‹คํžˆ Typed ๋ฌธ์„œ๋Š” TypeScript ๋ฌธ์„œ ์™ธ๋ถ€์— ์žˆ์œผ๋ฉฐ ์˜ค๋ž˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

TypeScript ํ”„๋กœ์ ํŠธ๋Š” ์ด์— ๋Œ€ํ•œ ๋ฌธ์„œ๋ฅผ ์†Œ์œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ™•์‹คํžˆ ํ˜•์‹ํ™” ๋œ ๋ฌธ์„œ๋Š” ๋‹ค์Œ ์œ„์น˜์— ์žˆ์Šต๋‹ˆ๋‹ค.

TS ๋ฌธ์„œ์—๋Š” ๊ทธ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€, ์™œ ์‚ฌ์šฉ๋˜๋Š”์ง€์— ๋Œ€ํ•œ ๊ฐœ์š”๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ณต์‹ ์‚ฌ์ดํŠธ๋ฅผ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํƒœ๊ทธ: definitely-typed

์ ์ง„์ ์œผ๋กœ TS๋ฅผ ๊ฐ€๋ฅด์น˜์ง€ ์•Š์Œ

(๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ํŽธ์ง‘๋จ) ๋ฌธ์„œ๊ฐ€ ์˜๋„ํ•œ ๋ช…ํ™•ํ•œ "ํŽ˜๋ฅด์†Œ๋‚˜"๊ฐ€ ์žˆ์„ ๋•Œ ๋ฌธ์„œ๊ฐ€ ๊ฐ€์žฅ ํšจ๊ณผ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ๊ฐ€ ๋งŒ๋“ค์–ด์กŒ์„ ๋•Œ ES6์€ ์•„์ง ์กด์žฌํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋ฉด ์˜คํ›„์— ๋ชจ๋“  TS๋ฅผ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ๋Œ€๊ฐ€ ๋ฐ”๋€Œ์—ˆ๋‹ค.

๋‚˜๋Š” react-typescript-cheatsheet bc๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ TS ๋ฌธ์„œ๋Š” ์ด๋ฏธ es6์„ ์•Œ๊ณ  ์žˆ๊ณ  ํ•œ ๋ฒˆ์— ๊ณ ๊ธ‰ TS๋ฅผ ๋ฐฐ์šฐ๊ณ  ์‹ถ์ง€ ์•Š์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋Š๊ผˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฒ˜์Œ์œผ๋กœ TS๋ฅผ ์‹œ๋„ํ•˜๋Š” ์ˆ™๋ จ๋œ JS ๊ฐœ๋ฐœ์ž๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๋ฌธ์„œ๋Š” "์—ฌ๊ธฐ ํด๋ž˜์Šค๊ฐ€ ๋ฌด์—‡์ธ์ง€" ๋˜๋Š” "์œ ํ˜• ์—ฐ์‚ฐ์ž ๋ฌธ์„œ์™€ ๊ฐ™์€ ํŽ˜์ด์ง€์— ๋ฌด์„œ์šด ์ œ๋„ค๋ฆญ์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค."์ž…๋‹ˆ๋‹ค.

ํŠนํžˆ ๋‹ค์Œ์€ ์ง„๋ณด์ ์ธ ๊ต์‚ฌ ์—ญํ• ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ ๋ คํ•ด์•ผ ํ•  ํŽ˜๋ฅด์†Œ๋‚˜์˜ ์ „์ฒด ๋ชฉ๋ก์ด ์•„๋‹™๋‹ˆ๋‹ค.

  • ๋นŒ๋“œ ๋‹จ๊ณ„ ์—†์ด JSDoc๊ณผ ํ•จ๊ป˜ TS๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋Š” ์‚ฌ๋žŒ๋“ค
  • ์ตœ๋Œ€ํ•œ ์ œ๋„ค๋ฆญ์„ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  TS๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ ๋ถ„
  • JS/Flow์—์„œ TS๋กœ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค
  • TS๋ฅผ ์ฒ˜์Œ ์ ‘ํ•˜๊ณ  TS๋ฅผ ์ฑ„ํƒํ–ˆ์ง€๋งŒ ์ฒ˜์Œ์œผ๋กœ ์ƒ์†Œํ•˜๊ณ  ์žฅํ™ฉํ•œ ์˜ค๋ฅ˜๋ฅผ ๋ณด๊ณ  ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผ ํ• ์ง€ ๋ชจ๋ฅด๋Š” ์‚ฌ๋žŒ๋“ค(์ด๊ฒƒ์ด " ๋ฌธ์ œ ํ•ด๊ฒฐ " ๋Œ€์ƒ) ๋˜๋Š” ์˜ตํŠธ์•„์›ƒ
  • TS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋Œ€ TS ์•ฑ์„ ๊ฒŒ์‹œํ•˜๋ ค๋Š” ์‚ฌ๋žŒ๋“ค
  • ์œ ํ˜• ์—ฐ์‚ฐ์ž ์‚ฌ์šฉ์„ ๋ฐฐ์šฐ๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ๋“ค
  • ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋Š” ์œ ํ˜• ์œ ํ‹ธ๋ฆฌํ‹ฐ์— ๋Œ€ํ•ด ๋ฐฐ์šฐ๊ณ ์ž ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค
  • ์œ ํ˜•์ด ์ง€์ •๋˜์ง€ ์•Š์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ž…๋ ฅํ•ด์•ผ ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค(.d.ts ์ž‘์„ฑ์„ ๊ฐ€๋Šฅํ•œ ํ•œ ์—„์ฒญ๋‚˜๊ฒŒ ์‰ฝ๊ณ  ์ž˜ ๋ฌธ์„œํ™”ํ•˜๋Š” ๊ฒƒ์€ ๋„คํŠธ์›Œํฌ ํšจ๊ณผ์ด์ž TS์˜ ๊ด€์‹ฌ์ž…๋‹ˆ๋‹ค)
  • ๊ทธ๋ฆฌ๊ณ  aaaaaaall ๋งˆ์ง€๋ง‰์—, ์ž์‹ ์˜ ์ œ๋„ค๋ฆญ ์œ ํ˜• ๋…ผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๊ณ ์ž ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค
  • (์–ด์ฉŒ๋ฉด) TS AST๋ฅผ ํ†ต๊ณผํ•ด์•ผ ํ•˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ž‘์„ฑํ•˜๋ ค๋Š” ์‚ฌ๋žŒ๋“ค

์ด๊ฒƒ๋“ค์€ ๋ชจ๋‘ TS ์ฑ„ํƒ ์—ฌ์ •์˜ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ๋งคํ•‘ํ•˜๊ณ  ์‚ฌ๋žŒ๋“ค์ด ๋ฌด์—‡์„ ํ•ด์•ผ ํ• ์ง€ ๋ชฐ๋ผ์„œ ๋„ˆ๋ฌด ์–ด๋ ต๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋„˜์–ด์ง€๋Š” ๋ฌธ์„œ์˜ ์ ˆ๋ฒฝ์ด ์—†๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์„œ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‹ ํ™”๋ฅผ ์—†์• ๋Š” ๋ฐ ๋งŽ์€ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

  • ํ•ญ์ƒ ์ตœ๋Œ€์˜ ์œ ํ˜• ์•ˆ์ „์„ฑ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค(tsconfig๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ž…๋ ฅ ๊ธฐ๋Šฅ์—์„œ ์„ ํƒํ•˜๋Š” ํ•ญ๋ชฉ์—์„œ๋„).
  • TS๋Š” OO ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ฅผ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค(์˜ˆ, ์ €๋Š” ์ด๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค)
  • TS๋Š” JS์— ์™€์„œ ์œ ํ˜•์„ ๋†“์น˜๋Š” C#/Java ๊ฐœ๋ฐœ์ž ์ „์šฉ์ด๋ฉฐ JS ๊ฐœ๋ฐœ์ž์—๊ฒŒ๋Š” ์‹ค์งˆ์ ์ธ ๊ฐ€์น˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  • TS ์˜ค๋ฅ˜๋ฅผ ์Šค์Šค๋กœ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ผ๋ฐ˜์ ์œผ๋กœ TS๋Š” ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ๋†’์€ ํ•™์Šต ๊ณก์„ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ React๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Vue ๋ฐ Node ๋“ฑ์˜ ๊ฒฝ์šฐ ์ฑ„ํƒ์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ํŠน์ • ๋Œ€๊ทœ๋ชจ ๊ฐœ๋ฐœ ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๊ณ  ๋˜ ๊ทธ๋ž˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๋ฌธ์„œ์—์„œ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Vue ๋ฌธ์„œ๋Š” ์ปจํ…์ŠคํŠธ์˜ ์‹ค์ œ ์˜ˆ์ œ์— ์ค‘์ ์„ ๋‘” Cookbook๊ณผ Guide๋ฅผ ๊ตฌ๋ถ„ ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ์ƒ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ํ›„๊ธฐ ๋‹จ๊ณ„์˜ TS ์ฑ„ํƒ(์ฆ‰, TS์—์„œ ํŒ๋งค๋˜๊ธฐ ์œ„ํ•ด ๋” ๋งŽ์€ ๋ฌธ์„œ/๋„๊ตฌ/๋ณด์ฆ/ํ•ธ๋“œํ™€๋”ฉ์ด ํ•„์š”ํ•œ ์‚ฌ๋žŒ๋“ค)์— ๋Œ€ํ•œ ํฐ ์žฅ์• ๋ฌผ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํƒœ๊ทธ: docs

์—ฐ๊ฒฐ๋œ TypeScript ์–ธ์–ด ์‚ฌ์–‘์ด ์™„์ „ํžˆ ๊ตฌ์‹์ž…๋‹ˆ๋‹ค.

๋ฉ”์ธ ํŽ˜์ด์ง€์—์„œ ์ง์ ‘ "TypeScript ์–ธ์–ด ์‚ฌ์–‘"์œผ๋กœ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

GitHub์—์„œ ์‚ฌ์–‘์„ ์ฝ๊ฑฐ๋‚˜ docx ๋˜๋Š” pdf๋กœ ๋‹ค์šด๋กœ๋“œํ•˜์‹ญ์‹œ์˜ค.

๊ทธ๋Ÿฌ๋‚˜ ํ•ด๋‹น ์‚ฌ์–‘์€ ์™„์ „ํžˆ ๊ตฌ์‹์ด๋ฉฐ(๋ฒ„์ „ 1.8์—์„œ ๊ณ ์ •, ๋งˆ์ง€๋ง‰ ์‹ค์ œ ์—…๋ฐ์ดํŠธ๋Š” 2016๋…„ 1์›”) ์œ ์ง€ ๊ด€๋ฆฌ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ์–‘์— ๋Œ€ํ•œ ์–ธ๊ธ‰์€ ์ƒ๋žตํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค.

ํƒœ๊ทธ: spec specification outdated

์ฝ”๋“œ ์ƒ˜ํ”Œ์„ ์œ„ํ•œ ๋†€์ดํ„ฐ ๊ฐ™์€ ์œ„์ ฏ

๋ชจ๋“  ํŽธ๋ฆฌํ•œ ๋„๊ตฌ ์„ค๋ช…, ํ•˜์ด๋ผ์ดํŠธ ๋“ฑ์ด ํฌํ•จ๋œ ๋†€์ดํ„ฐ์™€ ๊ฐ™์€ ์œ„์ ฏ์˜ ๋ฌธ์„œ์— ์žˆ๋Š” ๋ชจ๋“  ์ฝ”๋“œ ์ƒ˜ํ”Œ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

image

์ด์ƒ์ ์œผ๋กœ๋Š” ๋ฐฉ์ถœ๋œ JS/ํƒ€์ดํ•‘์„ ํŽธ์ง‘ํ•˜๊ณ  ๋ณด๋Š” ์ „์ฒด ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ๋กœ ํŠ€์–ด๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๊ณต์‹ TypeScript Playground ์— ์˜์กดํ•˜๊ฒŒ ๋  ๊ฒƒ์ด๋ฉฐ ๋งŒํผ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค .

๋ฆด๋ฆฌ์Šค ์ •๋ณด์—๋งŒ ์กด์žฌํ•˜๋Š” API ๋ฌธ์„œ

unknown ์™€ ๊ฐ™์€ ์ผ๋ถ€ ์œ ํ˜• ์€ ๋ฆด๋ฆฌ์Šค ์ •๋ณด ์—๋งŒ ๋ฌธ์„œํ™”

ํƒœ๊ทธ: docs

ํฌ์Šฌ๋ž˜์‹œ ๋†€์ดํ„ฐ

/tests/cases/compiler ์—๋Š” ๊ธฐ์ค€์„ ๊ณผ ํ•จ๊ป˜ ์‹ ๋น„ํ•œ ์•”ํ‘ ๋ฌผ์งˆ์ฒ˜๋Ÿผ ์ž‘๋™ํ•˜๋Š” ์—„์ฒญ๋‚œ ์–‘์˜ ํŒŒ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฉ”๊ฐ€๋ฐ”์ดํŠธ๋Š” ๋ฌธ์„œ/๋ฐ๋ชจ๋กœ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • https://www.typescriptlang.org/play/tests/cases/compiler/aliasAssignments.ts ๋ฅผ ํ†ตํ•ด TS ๋†€์ดํ„ฐ๊ฐ€ TS ์ €์žฅ์†Œ์—์„œ ๋ชจ๋“  ํŒŒ์ผ์„ ๋กœ๋“œํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • TS ๋†€์ดํ„ฐ๊ฐ€ 'ํฌ์Šฌ๋ž˜์‹œ'๋ฅผ ์ดํ•ดํ•˜๊ฒŒ ํ•˜์„ธ์š”
  • ํ•ด๋‹น ํŒŒ์ผ์— ์„ค๋ช… ์ฃผ์„ ์ถ”๊ฐ€

๊ทธ๊ฒƒ์€ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ํฅ๋ฏธ๋กœ์šด ๊ตฌ๋ฌธ ์‚ฌ๋ก€์— ๋Œ€ํ•œ URL ๋งํฌ๋ฅผ ํ—ˆ์šฉํ•˜๊ณ  ์‚ฌ๋žŒ๋“ค์ด ๋‹ค๋ฅธ ํŽ‘ํ‚คํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์ œ์ถœํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

image

์ฃผ์–ด์ง„ TS ๊ตฌ๋ฌธ์„ ์„ค๋ช…ํ•˜๋Š” ๋†€์ดํ„ฐ

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

๊ฐ๋„๊ฐ€ ํ’๋ถ€ํ•œ ๊ตฌ๋ฌธ ๋ฉ์–ด๋ฆฌ๋ฅผ ๋ถ™์—ฌ๋„ฃ๊ณ  ์‚ฌ๋žŒ์ด ์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ์žฅํ™ฉํ•œ ๋ณด๊ธฐ๋‚˜ ๋‹ค์ด์–ด๊ทธ๋žจ์„ ๊ด€์ฐฐํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์–ด๋–จ๊นŒ์š”? A ๋Š” ํด๋ž˜์Šค์ด๊ณ  B ๋Š” ๊ณต์šฉ์ฒด ์œ ํ˜•์ด๋ฉฐ C ๋Š” D ๋Œ€ํ•œ ์ผ๋ฐ˜ ๋งค๊ฐœ๋ณ€์ˆ˜์ž„์„ ์˜์‹ฌํ•  ์—ฌ์ง€ ์—†์ด ๋ช…ํ™•ํ•˜๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค B ๋“ฑ๋“ฑ.

์ˆœ์ง„ํ•œ '์žฅํ™ฉํ•œ AST ์˜ˆ์œ ์ธ์‡„'๋กœ ์‹œ์ž‘ํ•˜์—ฌ ์‹œ๊ฐ„๊ณผ ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๊ธฐ์—ฌ๋กœ ๋” ๊นŠ์€ ํŒจํ„ด ์ธ์‹๊ณผ ๋” ํ’๋ถ€ํ•œ ๋Œ€ํ™”ํ˜• ๋น„์ฃผ์–ผ ๋ฐ UML๊ณผ ๊ฐ™์€ ๋‹ค์ด์–ด๊ทธ๋žจ์œผ๋กœ ํ™•์žฅ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์„œ์— ๋Œ€ํ•œ ๊ฒ€์ƒ‰์ด ์—†์Šต๋‹ˆ๋‹ค

๋‚˜๋Š” ์ข…์ข… ์ฃผ์š” ๋ฌธ์„œ๋ฅผ ์‚ฌ์‹ค์˜ ์†Œ์Šค๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค, ์˜ˆ๋ฅผ ๋“ค์–ด React ๋ฌธ์„œ์—์„œ์™€ ๊ฐ™์ด DocSearch๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค typescript๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌด์–ธ๊ฐ€๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ธํ„ฐ๋„ท ๊ฒ€์ƒ‰์— ์˜์กดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํƒœ๊ทธ: search , exploration

์ปค๋ฎค๋‹ˆํ‹ฐ ํ”„๋กœ์ ํŠธ ๊ฐ•์กฐ

์ด๊ฒƒ์€ ๋ชจ์ž„, ์ปค๋ฎค๋‹ˆํ‹ฐ ๋Œ€ํ™” ๋˜๋Š” ์ฑ…๊ณผ ๊ฐ™์€ ๊ฒƒ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋Š” TypeScript๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋” ํฐ ์†Œํ”„ํŠธ์›จ์–ด ํ”„๋กœ์ ํŠธ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

ํƒœ๊ทธ: Community

ํŠน์ • ์ปดํŒŒ์ผ๋Ÿฌ ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์ด๋“œ ์ œ๊ณต

์˜ˆ๋ฅผ ๋“ค์–ด noImplicitReturns ๋ฅผ ์ผœ๋ฉด ์–ด๋–ค ์ข…๋ฅ˜์˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ๊ถŒ์žฅ ์‚ฌํ•ญ์€ ํ•ด๋‹น ํ”Œ๋ž˜๊ทธ๊ฐ€ ๋„์ž…๋œ ์‹œ์ ์˜ ๋ฒ„์ „ ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋ฏ€๋กœ ์ฐพ๋Š” ๊ฒƒ์ด ๊นŒ๋‹ค๋กญ์Šต๋‹ˆ๋‹ค.

ํƒœ๊ทธ: tsconfig

์ปดํŒŒ์ผ๋Ÿฌ ์˜ค๋ฅ˜ ์ธ๋ฑ์Šค ํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ

Rust ์–ธ์–ด๋Š” ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ์ƒ๋‹นํ•œ ๋…ธ๋ ฅ

ํƒœ๊ทธ: compiler

๊ฐ๋„๊ฐ€ ํ’๋ถ€ํ•œ ๊ตฌ๋ฌธ ๋ฉ์–ด๋ฆฌ๋ฅผ ๋ถ™์—ฌ๋„ฃ๊ณ  ์‚ฌ๋žŒ์ด ์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ์žฅํ™ฉํ•œ ๋ทฐ๋‚˜ ๋‹ค์ด์–ด๊ทธ๋žจ์„ ๊ด€์ฐฐํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์–ด๋–จ๊นŒ์š”?

๋‚˜๋Š” ์ด๊ฒƒ์ด ๋ฉ‹์ง€๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ์œ ํ˜•์ด ์–ด๋–ป๊ฒŒ ๋ถ„๋ฅ˜๋˜๋Š”์ง€์— ๋Œ€ํ•œ ๊ณ ๋„๋กœ ๊ตฌ์กฐํ™”๋œ ์„ค๋ช…(์ž๋™ ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•  ๊ฒƒ ๊ฐ™์€)์€ ํŠน์ • ๋ชฉํ‘œ. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ด๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•˜๊ธฐ๋ฅผ ์›ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

type X<T extends object> = {
    [K in keyof T]: T[K]
}[keyof T]

๋‚˜๋Š” ๋‹น์‹ ์—๊ฒŒ _ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค_

X ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ํ•˜๋‚˜ ๊ฐœ์˜ ์œ ํ˜•์œผ๋กœ ์œ ํ˜• ๋ณ„๋ช…์ž…๋‹ˆ๋‹ค T ๋กœ ์ œํ•œ๋˜์–ด์žˆ๋Š” object . T ์ธ์Šคํ„ด์Šคํ™”ํ•˜๋ฉด ๋งคํ•‘๋œ ์œ ํ˜•์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ keyof T ์œ ํ˜•์˜ ๊ฐ ๊ตฌ์„ฑ ์š”์†Œ K ์— ๋Œ€ํ•ด ๊ฐ’์€ ์ธ๋ฑ์‹ฑ๋œ ์•ก์„ธ์Šค ์œ ํ˜• T[K] . X ๋Š” keyof T ์œ ํ˜•์˜ ๋งคํ•‘๋œ ์œ ํ˜•์— ๋Œ€ํ•ด ์ธ๋ฑ์‹ฑ๋œ ์•ก์„ธ์Šค ์œ ํ˜•์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ TypeScript์— ๋Œ€ํ•œ ์ž‘์—… ์ง€์‹์ด ์žˆ๋Š” ์‚ฌ๋žŒ ์™ธ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋” ๋„์›€์ด ๋˜์ง€๋งŒ ๋งค์šฐ ์–ด๋ ค์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

X ๋Š” T ์˜ ๋ฉค๋ฒ„ ๊ฐ’ ์œ ํ˜•์˜ ํ•ฉ์ง‘ํ•ฉ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

์ด์™€ ๊ฐ™์€ ํŒจํ„ด์˜ "๋ ˆ์‹œํ”ผ" ๋ชจ์Œ์ด ์žˆ์œผ๋ฉด ํŽธ๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณ ๊ธ‰ ์œ ํ˜• ํŽ˜์ด์ง€๋Š” ๋ช…ํ™•ํ•˜์ง€ ์•Š์€ ์œ ํ˜•์— ๋Œ€ํ•œ ์ผ์ข…์˜ ๋คํ•‘ ์žฅ์†Œ์ž…๋‹ˆ๋‹ค( PHP ์ •์  ๋ถ„์„ ๋„๊ตฌ์— ๋Œ€ํ•œ TypeScript์˜ ์•„์ด๋””์–ด๋ฅผ ํ›”์ณค์œผ๋ฏ€๋กœ ํ•ด๋‹น ํŽ˜์ด์ง€์—์„œ ๋งŽ์ด ์ฐพ์Šต๋‹ˆ๋‹ค).

๊ฑฐ๊ธฐ์— ์žˆ๋Š” ๋งŽ์€ ์•„์ด๋””์–ด๊ฐ€ ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€๋งŒ ํŽ˜์ด์ง€ ๊ฐ„์˜ ํ•˜์ดํผ๋งํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ถฉ๋ถ„ํžˆ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

Type Guard/Type Predicate ์„น์…˜์€ โ€‹โ€‹ํŠนํžˆ ์ž์ฒด ํŽ˜์ด์ง€์— ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋Š๊ปด์ง‘๋‹ˆ๋‹ค.

ํƒ€์ดํ”„์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž‘์„ฑ ์ง€์นจ

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

ํƒœ๊ทธ: libraries , guidance

๋ชจ๋ฐ”์ผ ๋‚ด๋น„๊ฒŒ์ด์…˜์€ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋ฐ”์ผ์—์„œ ์›น์‚ฌ์ดํŠธ ํ•ธ๋“œ๋ถ์„ ์ฝ์„ ์ˆ˜ ์—†์–ด ์ƒ๋‹นํžˆ ์‹ค๋ง์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ํ•ธ๋“œ๋ถ์˜ ๊ฐ ํŽ˜์ด์ง€์—์„œ ํŽ˜์ด์ง€ ํ•˜๋‹จ์— ์ด์ „/๋‹ค์Œ ํƒ์ƒ‰ ๊ธฐ๋Šฅ์ด ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํŠธ์œ—์—์„œ

ํƒœ๊ทธ: nav

๋” ๋งŽ์€ ์‹ค์ œ ์‚ฌ๋ก€ ์‚ฌ์šฉ

ํ˜„์žฌ ์˜ˆ์ œ ์ค‘ ์ผ๋ถ€๋Š” ๋ฌธ์ž ๊ธฐ๋ฐ˜(A, B, C) ๋˜๋Š” ๊ด€๋ จ์„ฑ์ด ์—†๋Š” ์šฉ์–ด(foo, bar, baz, args, obj ๋“ฑ)์ธ ๋ช…๋ช… ๊ทœ์น™์„ ์‚ฌ์šฉํ•˜์—ฌ ์ง€๋‚˜์น˜๊ฒŒ ์ผ๋ฐ˜์ ์ด๊ฑฐ๋‚˜ ์ถ”์ƒ์ ์ž…๋‹ˆ๋‹ค. ๋” ๋งŽ์€ ์‹ค์ œ ์‚ฌ๋ก€(๋ชจ์–‘, ๋™๋ฌผ, ์ œํ’ˆ, ์‚ฌ์šฉ์ž)์™€ ํ•ฉ๋ฒ•์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€(API ํ˜ธ์ถœ, ๋กœ๊น…, ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ, ๋ฐ์ดํ„ฐ ํ˜•์‹ ์ง€์ •)๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์ด๋Š” ์ œ๋„ค๋ฆญ ๋ฐ ๊ณ ๊ธ‰ ์œ ํ˜•๊ณผ ๊ฐ™์ด ์ด๋ฏธ ์ถ”์ƒํ™”๋˜์–ด ์žˆ๋Š” ๊ฐœ๋…์— ํŠนํžˆ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ : ๋ฌธ์„œ์˜ ์ผ๋ถ€ ์˜์—ญ์—์„œ ์ด๋ฏธ ์ด ๋ฌธ์ œ ๐Ÿ‘Œ๐Ÿป๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ์ง€๋งŒ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.

ํƒœ๊ทธ: examples

์˜ˆ์ œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ๋ชจ๋ฒ” ์‚ฌ๋ก€

๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ํ•จ์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. lodash์—๋Š” ์„ ํƒ, ํ™•์žฅ, ๋ณ‘ํ•ฉ ๋“ฑ๊ณผ ๊ฐ™์€ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ๋ฉ‹์ง„ ๊ธฐ๋Šฅ์ด ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ž…๋ ฅ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์ ์  ๋ณต์žกํ•ด์ง€๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ. TS์˜ ํŠน์ • ํ•ญ๋ชฉ์ด ํ”„๋กœ๋•์…˜์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ์‹์„ ๋ณด์—ฌ์ฃผ๋Š” ์ปค๋ฐ‹์— ๋Œ€ํ•œ ๋” ๋งŽ์€ ๋งํฌ๋ฅผ ์ฝ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ตญ ๋นŒ๋“œ๋˜๋Š” ๊ฒƒ์ด ๋ฌด์—‡์ด๋“  ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์˜ˆ์ œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์‰ฝ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. git repo์™€ ๊ฐ™์€ TS ํ•ธ๋“œ๋ถ์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

์ตœ๊ณ ์˜ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ตœ๊ณ ์˜ ๋ฌธ์„œ์™€ ์ƒˆ๋กœ์šด ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

TS๋ฅผ ์‹ ๊ทœ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋”์šฑ ํ™˜์˜ํ•˜๋„๋ก ํ•ฉ์‹œ๋‹ค.

tsconfig ์˜ต์…˜์— ๋Œ€ํ•œ ๋” ๋‚˜์€ ์„ค๋ช…

์ปดํŒŒ์ผ๋Ÿฌ ์˜ต์…˜ ํŽ˜์ด์ง€์˜ ํ˜„์žฌ ์„ค๋ช…

  • ๊ฐ ์˜ต์…˜์— ๋Œ€ํ•œ ๋งค์šฐ ๋ชจํ˜ธํ•œ ์„ค๋ช…๊ณผ ์ด๊ฒƒ์ด ์ปดํŒŒ์ผ ๋ฐ ์œ ํ˜• ๊ฒ€์‚ฌ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ์˜ˆ๊ฐ€ ์ •๋ง ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ‘œ ํ˜•์‹์€ ์•ฝ๊ฐ„์˜ ์„ค๋ช… ๊ณต๊ฐ„์„ ๋‚จ๊น๋‹ˆ๋‹ค.
  • TypeScript ๋ฒ„์ „์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  • ์•ŒํŒŒ๋ฒณ ์ˆœ์„œ๋Š” ์œ ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ์˜ต์…˜์€ target , module ๋ฐ lib ๋˜๋Š” ๋ชจ๋“  ์—„๊ฒฉํ•œ ์œ ์‚ฌ ์˜ต์…˜๊ณผ ๊ฐ™์ด ์„œ๋กœ ๋ฐ€์ ‘ํ•˜๊ฒŒ ๊ด€๋ จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค์„ ๋”ฐ๋กœ๋”ฐ๋กœ ๋ณด๋ฉด ์ž˜ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. target ๋จผ์ € ์ดํ•ดํ•˜์ง€ ์•Š๊ณ ๋Š” lib ์˜ต์…˜์„ ์ดํ•ดํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์‚ฌ๋žŒ๋“ค์€ tsc ์˜ต์…˜์ด ์•„๋‹Œ tsconfg ํŒŒ์ผ์—์„œ ์ด๋Ÿฌํ•œ ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ํ˜„์žฌ ํ˜•์‹์€ ์‹ ๊ทœ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ˜ผ๋™์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ผ๋ถ€ ์˜ต์…˜์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…์€ ๋ฌธ์„œ ์ „์ฒด์— ํฉ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ: @types , typeRoots ๋ฐ types ์˜ต์…˜์€ tsconfig.json ํŽ˜์ด์ง€ ๋ฐ baseUrl ๋ฐ paths ๋ชจ๋“ˆ ํ•ด์ƒ๋„

ํŠน์ • ์ปดํŒŒ์ผ๋Ÿฌ ํ”Œ๋ž˜๊ทธ ์ œ์•ˆ

ํŽธ์ง‘ํ•˜๋‹ค:
๋ฌธ์„œ์— ์ •๋ณด๊ฐ€ ์—†๊ณ  ๋ฆด๋ฆฌ์Šค ์ •๋ณด ๋ฐ GitHub ๋ฌธ์ œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ „์ฒด ๊ทธ๋ฆผ์„ ์กฐํ•ฉํ•ด์•ผ ํ•˜๋Š” ๋ณตํ•ฉ ํ”„๋กœ์ ํŠธ ๊ตฌ์ถ•๊ณผ ๊ด€๋ จ๋œ ๊ฒƒ๊ณผ ๊ฐ™์€ ์ƒˆ๋กœ์šด ์˜ต์…˜์€ ๋งํ•  ๊ฒƒ๋„ ์—†์Šต๋‹ˆ๋‹ค.

ํƒœ๊ทธ: tsconfig

๋ฌธ์„œ, ๋ธ”๋กœ๊ทธ ๋ฐ ๊ธฐํƒ€ ๊ณต์‹ ๋ฆฌ์†Œ์Šค๋ฅผ ํ•œ ๊ณณ์œผ๋กœ ์ˆ˜์ง‘

TypeScript์— ๋Œ€ํ•œ ๋ชจ๋“  ๊ณต์‹ ๋ฆฌ์†Œ์Šค๋ฅผ ํ•œ ๊ณณ(์˜ˆ: www.typescriptlang.org )์— ์ˆ˜์ง‘ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ •๋ง ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค! ๐Ÿ˜Š

์˜ˆ๋ฅผ ๋“ค์–ด v3.5 ๋ฐœํ‘œ์— ๋Œ€ํ•œ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์€ ๋‹ค๋ฅธ ์œ„์น˜( devblogs.microsoft.com )์— ์žˆ์Šต๋‹ˆ๋‹ค.
https://devblogs.microsoft.com/typescript/announcing-typescript-3-5/

๊ทธ๋ฆฌ๊ณ  v3.4 ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ๋Š” ๋‹ค๋ฅธ ์œ„์น˜์— ์žˆ์Šต๋‹ˆ๋‹ค.
https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-4.html

TypeScript ๊ฐœ๋ฐœ์ž์—๊ฒŒ๋Š” ์ด๊ฒƒ์ด ๊ทธ๋‹ค์ง€ ์œ ์šฉํ•˜๊ณ  ํ˜ผ๋ž€์Šค๋Ÿฝ์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ˜•

ํƒœ๊ทธ: blog , resources

๊ธฐ๋ณธ ์„ค์ • ๋ฐ ํ”„๋กœ์ ํŠธ ์„ค์ •์œผ๋กœ UI ์–‘์‹์„ ์ž‘์„ฑํ•˜์—ฌ tsconfig.json ์ƒ์„ฑ

๋ฌธ์„œ์— ๋Œ€์ƒ ํ™˜๊ฒฝ(๋ธŒ๋ผ์šฐ์ €, nodeJS), ์‚ฌ์šฉ์ž ๊ธฐ๋ณธ ์„ค์ •(์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๋Œ€๋กœ ์—„๊ฒฉํ•˜๊ฑฐ๋‚˜ ๊ด€๋Œ€ํ•จ) ๋ฐ ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ์— ๋งž๋Š” tsconfig.json์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ์–‘์‹/๋งˆ๋ฒ•์‚ฌ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ TS ์ปดํŒŒ์ผ๋Ÿฌ ์˜ต์…˜ ์—๋Š” ๋ช‡ ๊ฐ€์ง€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์˜ต์…˜๊ณผ ์ผ๋ถ€ ์ปดํŒŒ์ผ๋Ÿฌ ํ”Œ๋ž˜๊ทธ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์–ด ์–ธ๋œป ๋ณด๊ธฐ์— ๊ฑฐ์˜ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค(์˜ˆ: ๊ฒฝ๋กœ/๋””๋ ‰ํ† ๋ฆฌ/๋ฃจํŠธ์™€ ๊ด€๋ จ๋œ ์ผ๋ถ€ ์˜ต์…˜์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ). ์ƒ์„ฑ๋œ tsconfig๋Š” Microsoft TypeScript ํ•ต์‹ฌ ํŒ€์˜ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ๋”ฐ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐํƒ€ ์•ˆ๋‚ด ์งˆ๋ฌธ์—๋Š” ๋‹ค์Œ์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • TypeScript๋ฅผ ์‚ฌ์šฉํ•œ ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ ํŒ€์˜ ๊ฒฝํ—˜์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ("TS ์ „๋ฌธ๊ฐ€"์— ๋Œ€ํ•œ ๋ชจ๋“  ์—„๊ฒฉํ•œ ์˜ต์…˜์„ ์ œ์•ˆํ•˜๋ฉด์„œ ์ดˆ์‹ฌ์ž์—๊ฒŒ "JS์—์„œ TS๋กœ์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฒฝ๋กœ" ๊ด€๋ จ ์ปดํŒŒ์ผ๋Ÿฌ ์˜ต์…˜์„ ์ œ์•ˆํ•  ์ˆ˜ ์žˆ์Œ)
  • ํ”„๋กœ์ ํŠธ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋˜๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค(์ข…์†์„ฑ์ด ๊ฑฐ์˜ ์—†๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ฒฝ์šฐ strictNullChecks ์™€ ๊ฐ™์€ ์ผ๋ถ€ ์—„๊ฒฉํ•œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฌ์šธ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์— ๋”ฐ๋ผ ์ œ์•ˆ๋  ์ˆ˜ ์žˆ์Œ)
  • JSX/TSX(React)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค.
  • ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ/๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

    • ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋‚ด๋ณด๋‚ด์•ผ ๋Ÿฐํƒ€์ž„์— ํ”„๋ ˆ์ž„์›Œํฌ/๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: Angular, Aurelia์™€ ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์–ธ๊ธ‰).

ํƒœ๊ทธ: tsconfig , examples , guides , wizard , exploration

@orta ๋†€์ดํ„ฐ์˜ ๋ชจ๋ฐ”์ผ ๋ฒ„์ „์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์ตœ์†Œํ•œ ํ˜„์žฌ ๋ฒ„์ „์„ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ต‰์žฅํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ๋กœ์„œ๋Š” ๋†€์ดํ„ฐ๊ฐ€ ๋ชจ๋ฐ”์ผ์—์„œ ๋”์ฐํ•ด ๋ณด์ž…๋‹ˆ๋‹ค(์Šคํฌ๋ฆฐ์ƒท์€ iPhone 7์—์„œ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค).

์›น์‚ฌ์ดํŠธ์˜ "ํ•ธ๋“œ๋ถ" ์˜์—ญ์— ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด๊ณผ ์ด๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊ตฌ์ฒด์ ์œผ๋กœ ์„ค๋ช…ํ•˜๋Š” ์„น์…˜์ด ์žˆ์—ˆ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, "๋ชจ๋“  ์†์„ฑ์ด ์žˆ๋Š” typescript ๊ฐœ์ฒด ๋ฆฌํ„ฐ๋Ÿด" ๋˜๋Š” "ํ•˜๋‚˜์˜ ํ•„์ˆ˜ ์†์„ฑ๊ณผ ๋‹ค๋ฅธ ์†์„ฑ์ด ์žˆ๋Š” typescript ๊ฐœ์ฒด ๋ฆฌํ„ฐ๋Ÿด"๊ณผ ๊ฐ™์€ ๊ฒƒ์„ Google์— ์ง€์†์ ์œผ๋กœ ๊ฒ€์ƒ‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ํ•ญ์ƒ { [key: string]: any } ์œ ํ˜•์„ ์ฐพ์•„์•ผ ํ•˜๋Š”๋ฐ, ์ด๊ฒƒ์€ ์–ด๋””์—๋„ ์‹ค์ œ๋กœ ๋…ผ์˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ๋‚ด์šฉ ์ค‘ ์ผ๋ถ€๋Š” "์ธํ„ฐํŽ˜์ด์Šค"์— ๋Œ€ํ•ด ๋…ผ์˜๋˜์ง€๋งŒ ์ฆ‰์‹œ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ณต๊ธ‰์—…์ฒด ์œ ํ˜• ๋ณด๊ฐ•

๋•Œ๋•Œ๋กœ ConfirmTyped ์œ ํ˜• ๋˜๋Š” ๊ธฐํƒ€ ๊ณต๊ธ‰์—…์ฒด ๋ชจ๋“ˆ ์ •์˜๋กœ ์ž‘์—…ํ•  ๋•Œ ์ •์˜๋ฅผ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋กœ ์กฐ์ •ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค.

1) ๊ธฐ์กด ์ •์˜ ๋ฎ์–ด์“ฐ๊ธฐ/์ˆ˜์ •
2) ์ƒˆ๋กœ์šด ๋ฉ”์†Œ๋“œ/์†์„ฑ ์ถ”๊ฐ€

๋‹ค์–‘ํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ ์ ˆํ•œ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ฌธ์„œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ €๋„ ํ˜ผ์ž ํ•ด์•ผ ํ•  ๋•Œ ๋ฉ”๋ชจ๋ฅผ ์ž˜ ๋ชปํ–ˆ์–ด์š” ๐Ÿ™. https://www.typescriptlang.org/docs/handbook/declaration-merging.html ์€ ์ž์‚ฌ ์ฝ”๋“œ์— ๋Œ€ํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ง€๋งŒ ํƒ€์‚ฌ ๋ชจ๋“ˆ ์œ ํ˜•/๋‚ด๋ณด๋‚ด๊ธฐ์—๋Š” ํ•ด๋‹น ์กฐ์–ธ์ด ์ ์šฉ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋ถ„๋ช…ํžˆ PR์„ ์ฆ‰์‹œ ์—ด์–ด ํ•ด๋‹น ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ์œ ํ˜•์„ ์ˆ˜์ •/์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์ด ์ข‹์ง€๋งŒ, ์›Œํฌํ”Œ๋กœ๋ฅผ ๋ฐฉํ•ดํ•˜๊ณ  ์ž„์‹œ any ๋ณ€ํ™˜ ๋ฐ ํ›„์† TODO.

ํƒœ๊ทธ: vendor

์ปดํŒŒ์ผ๋Ÿฌ API ๋ฌธ์„œ

์œ„ํ‚ค์—๋Š” ์ปดํŒŒ์ผ๋Ÿฌ API ์‚ฌ์šฉ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์žˆ์ง€๋งŒ(https://github.com/microsoft/TypeScript/wiki/Using-the-Compiler-API) ํŠน์ • ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์˜ ์˜ˆ๋งŒ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์กด์žฌํ•˜๋Š” ํŠน์ • ๊ฐ์ฒด์™€ ๋ฉ”์†Œ๋“œ๋ฅผ ๋‚˜์—ดํ•˜๊ณ  ๊ทธ๋“ค์ด ํ•˜๋Š” ์ผ์— ๋Œ€ํ•ด ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋Š” ๋” ๋งŽ์€ JSDoc ์Šคํƒ€์ผ ์ •๋ณด๊ฐ€ ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ง€๊ธˆ ์ €๋Š” API๋ฅผ ๋ฐฐ์šฐ๋ ค๊ณ  ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ์•„๋‚ด๊ธฐ ์œ„ํ•ด typescript ์†Œ์Šค๋ฅผ ์‚ดํŽด๋ณด์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

(์œ„ํ‚ค์— ์–ธ๊ธ‰๋œ ๊ฒƒ์ฒ˜๋Ÿผ API๊ฐ€ ์•„์ง ์•ˆ์ •์ ์ด์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์ด ์™„๋ฃŒ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ฌด์‹œํ•˜์‹ญ์‹œ์˜ค)

ํƒœ๊ทธ: compiler

๊ธฐ์กด ์–ธ์–ด์™€ ๋น„๊ตํ•˜์—ฌ TS์— ์ค‘์ ์„ ๋‘” ์ž์Šต์„œ

๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด TypeScript๋ฅผ ๋‘ ๋ฒˆ์งธ(๋˜๋Š” ๊ทธ ์ด์ƒ) ์–ธ์–ด๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. TypeScript ํ•™์Šต์„ ๋‹จ์ˆœํ™”ํ•˜๋Š” ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์€ ์ด๋ฏธ ์•Œ๊ณ  ์žˆ๋Š” ๊ธฐ์กด ์–ธ์–ด์™€ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. JS, Java, C#, PHP, C(+ CPP) ๋ฐ Ruby์™€ ๊ฐ™์€ ์ธ๊ธฐ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด

์ง€๊ธˆ ์šฐ๋ฆฌ๋Š” ๋‹น์‹ ์ด JS๋ฅผ ์•Œ๊ณ  ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

ํƒœ๊ทธ: tutorials

๊ธฐ๋ณธ์ ์œผ๋กœ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธ

accessibilityinsights.io์™€ ๊ฐ™์€ ๋ฆฐํ„ฐ๊ฐ€ ํ†ต๊ณผํ•˜๋Š”์ง€ ํ™•์ธ

ํƒœ๊ทธ: infra

๋†€์ดํ„ฐ์— ๋Œ€ํ•œ ์งง๊ณ  ๊ณต์œ  ๊ฐ€๋Šฅํ•œ URL

TypeScript ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ์˜ "๊ณต์œ " ๋ฒ„ํŠผ์ด ์ „์ฒด ์†Œ์Šค ์ฝ”๋“œ๋ฅผ URL์— ๋คํ•‘ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์งง์€ URL์„ ์ƒ์„ฑํ•˜๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋˜๋Š” URL์— ๋†€์ดํ„ฐ๋ฅผ ์ฑ„์šฐ๋Š” github ์š”์ง€ ID๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ: https://www.typescriptlang.org/play?gist=eb25a1f350e50d6ed3561a777fbfe424

ํƒœ๊ทธ: playground

์„ค์ •์ด ๋‹ค๋ฅธ ์˜ˆ(์‚ฌ์šฉ ์‚ฌ๋ก€/์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ๋‹ค๋ฆ„)

๋‚ด TS ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•๊ณผ ๋‹ค์–‘ํ•œ ์ฝ”๋“œ๋ฒ ์ด์Šค์— ๋Œ€ํ•ด ๋”ฐ๋ฅผ ์ˆ˜ ์žˆ๋Š” ์˜ˆ์ œ๋ฅผ ์•„๋Š” ๊ฒƒ์ด ๊นŒ๋‹ค๋กญ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์œผ๋ฏ€๋กœ https://github.com/microsoft/TypeScriptSamples/ ์™€ ๊ฐ™์€ ์˜ˆ์ œ ๋ชฉ๋ก์ด ์›น์‚ฌ์ดํŠธ์— ํ‘œ์‹œ๋˜๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. tsconfig.json ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์˜๋„ํ•œ ๋Œ€๋กœ ์ž‘๋™ํ•˜๋„๋ก TS ํŒŒ์ผ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

ํƒœ๊ทธ: docs , examples

๋ฌธ์„œ๊ฐ€ ์œ„ํ‚ค ๋Œ€ ํ•ธ๋“œ๋ถ์— ํฌํ•จ๋˜๋Š” ๋ถ„๋ช…ํ•œ ์ด์œ ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

Wiki์˜ this ์— ์žˆ๋Š”

์ฃผ์ œ์™€ ์ œ๋ชฉ ๊ฐ„ ํƒ์ƒ‰ ๊ฐœ์„ 

ํ•ธ๋“œ๋ถ ยง ๊ณ ๊ธ‰ ์œ ํ˜• ๊ณผ ๊ฐ™์€ ๋ฐฉ๋Œ€ํ•œ ์ฃผ์ œ๋Š” ๋ณ„๋„์˜ ์ œ๋ชฉ ๊ฐ„์— ํƒ์ƒ‰์ด ์ž˜ ๋˜์ง€ ์•Š์œผ๋ฉฐ ์œ„๋กœ ๊ฐ€๊ธฐ ๋ฒ„ํŠผ๋„ ์—†์Šต๋‹ˆ๋‹ค. ํ”Œ๋กœํŒ… ํƒ์ƒ‰ ๋ฉ”๋‰ด๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์ •๋ง ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ํ•œ ํƒ€์ดํ‹€์—์„œ ๋‹ค๋ฅธ ํƒ€์ดํ‹€๋กœ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ์›ํ•˜๋Š” ํƒ€์ดํ‹€์„ ๋น ๋ฅด๊ฒŒ ์ฐพ๋Š” ๊ฒƒ์ด ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์ด Assembly Script git book์— ์ œ๊ณต๋œ ํƒ์ƒ‰์˜ ์ข‹์€ ์˜ˆ์ž…๋‹ˆ๋‹ค. https://docs.assemblyscript.org/basics/environment

ํƒœ๊ทธ: website , handbook , navigation

๋ชจ๋ฐ”์ผ ์นœํ™”์ ์ธ ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ ์ฝ”๋“œ ํŽธ์ง‘

๋‚ด๊ฐ€ ์•Œ๊ธฐ๋กœ๋Š” ๊ตฌ๋ฌธ ๊ฐ•์กฐ ํ‘œ์‹œ์™€ ๋‹ค๋ฅธ ๋ชจ๋“  IDE ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•œ ๋ชจ๋ฐ”์ผ ์นœํ™”์ ์ธ ์ฝ”๋“œ ํŽธ์ง‘์€ ๊ณ ํ†ต์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋ฐ์Šคํฌํ†ฑ/๋…ธํŠธ๋ถ์—์„œ ๋ฉ€๋ฆฌ ๋–จ์–ด์ง„ ํœด๋Œ€์ „ํ™”์—์„œ ์ฝ”๋“œ ์กฐ๊ฐ์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋ชจ๋ฐ”์ผ ์‚ฌ์šฉ์„ ์œ„ํ•œ ๊ตฌ๋ฌธ ๊ฐ•์กฐ ํŽธ์ง‘๊ธฐ ๋Œ€์‹  ์ผ๋ฐ˜ <textarea> ํ•„๋“œ๋ฅผ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ค๋ฅ˜๋Š” ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋‚˜ ํŒ์—… ๋˜๋Š” ๊ธฐํƒ€ html ์š”์†Œ์— ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํƒœ๊ทธ: ๋†€์ดํ„ฐ, ๋ชจ๋ฐ”์ผ, ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ

๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜ es6 ๋ชจ๋“ˆ์šฉ .js ํ™•์žฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฌธ์„œ

๊ฐ€์ ธ์˜ค๊ธฐ ์ด๋ฆ„์— .js ํ™•์žฅ์ž๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ
https://github.com/Microsoft/TypeScript/issues/16577#issuecomment -343610106

์–ด๋–ค ๋ฒ„์ „์˜ TS๊ฐ€ ์ถ”๊ฐ€ํ–ˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ './file.js'์™€ ๊ฐ™์€ ๊ฐ€์ ธ์˜ค๊ธฐ๊ฐ€ ์ด์ œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค(ํŒŒ์ผ์ด ์‹ค์ œ๋กœ file.ts์ธ ๊ฒฝ์šฐ์—๋„).

์ €์—๊ฒŒ ์ด๊ฒƒ์€ ์—„์ฒญ๋‚œ ๊ธฐ๋Šฅ์ด์—ˆ์Šต๋‹ˆ๋‹ค... ํ•˜์ง€๋งŒ ๊ณต์‹์ ์œผ๋กœ๋Š” ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค?!

๊ณ ๊ธ‰ ์œ ํ˜• ํŽ˜์ด์ง€์—๋Š” Omit<T, K> ์œ ํ˜•์ด ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Omit<T, K> ๋Š” ์ตœ๊ทผ TypeScript 3.5์— ์ถ”๊ฐ€ ๋˜์—ˆ์ง€๋งŒ ๊ณ ๊ธ‰ ์œ ํ˜• ํŽ˜์ด์ง€์—๋Š” ์—ฌ์ „ํžˆ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณ ์ง€ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

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

Linters์— ๋Œ€ํ•œ ํ”„๋กœ์ ํŠธ ์„ค์ • ๋ฌธ์„œ ์ œ๊ณต

ํ”„๋กœ์ ํŠธ ์„ค์ •์˜ ์ผ๋ถ€๋กœ Linter๋กœ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํฌํ•จ์‹œํ‚ค์‹ญ์‹œ์˜ค. ์•„๋งˆ๋„ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ž์ฒด์ ์œผ๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” typescript-eslint์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํƒœ๊ทธ: linter

๊ฐ€์žฅ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜ ๋˜๋Š” TypeScript ์ œํ•œ ์‚ฌํ•ญ์„ ๋‹ค๋ฃจ๋Š” ๊ฒƒ์€ ์—†์Šต๋‹ˆ๋‹ค.

TypeScript๋ฅผ ์ฒ˜์Œ ๋ฐฐ์šธ ๋•Œ TypeScript์—์„œ ์ง€์›๋˜์ง€ ์•Š๋Š” ํŠน์ • ํŒจํ„ด์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๊ฒƒ ์ค‘ ํ•˜๋‚˜:

const buildResult = (name?: string) => {
  const result = {};
  if (name) {
    result.name = name; // error, this property doesn't exist on {}
  }
  return result;
};

ํšŒ์‚ฌ์— TypeScript๋ฅผ ๋„์ž…ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋Š”๋ฐ ์ด์™€ ๊ฐ™์€ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์ด ๋ฐœ์ƒํ•˜์—ฌ FAQ/๋ฌธ์ œ ํ•ด๊ฒฐ ์Šคํƒ€์ผ์˜ ๊ฐ€์ด๋“œ๋กœ ๋ฌธ์„œํ™”ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋น ๋ฅด๊ฒŒ ์„ฑ์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(๊ฑฐ์นœ ์ƒํƒœ์— ์žˆ์Œ).

ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์†์„ฑ์„ ๋Œ€์ƒ์œผ๋กœ ๋นŒ๋“œ
์›ํ•  ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ์ด์œ : ์ดˆ๊ณผ ์†์„ฑ ํ™•์ธ
๊ณต์šฉ์ฒด๋ฅผ ํฌํ•จํ•˜์—ฌ ์„ ํƒ์  ์†์„ฑ์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฐฉ๋ฒ•
Object.keys ๋ฐ Object.entries๊ฐ€ ์›ํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋Š” ์ด์œ 
ํ•„ํ„ฐ ํ•„ํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด ์˜ค๋ฅ˜ ์—†์ด ์ž‘์—…์„ ์ค„์ž…๋‹ˆ๋‹ค.
์œ ํ˜• ์„ธ๋ถ„ํ™”๊ฐ€ ์†์‹ค๋จ

์ด ์ •๋ณด ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๋ฌธ์„œ์— ์žˆ์œผ๋ฉด ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ˆ˜๋…„๊ฐ„์˜ ์‹œํ–‰์ฐฉ์˜ค๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์ด๊ฒƒ์„ ์ดํ•ดํ•˜๊ณ  Github์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์—ฐ๊ฒฐ๋œ ๋ฌธ์ œ๋ฅผ ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค.

ํƒœ๊ทธ: errors , troubleshooting , limitations

์‚ฌ์šฉ์ž ์ •์˜ ์œ ํ˜• ์ •์˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ๋ฌธ์„œ ์ œ๊ณต

์œ ํ˜•์„ ํฌํ•จํ•˜์ง€ ์•Š๊ณ  @types/* ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ ์ด๋Ÿฌํ•œ ์„ ์–ธ ํŒŒ์ผ์— ๋Œ€ํ•œ ๋‚ด ์ž์‹ ์˜ ์„ ์–ธ ํŒŒ์ผ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์›ํ•˜์ง€๋งŒ ์ด๋ฅผ ์ž‘์„ฑํ•˜๊ณ  typescript๊ฐ€ ์ธ์‹ํ•˜๋„๋ก ํ•˜๋Š” '์˜ฌ๋ฐ”๋ฅธ' ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ฌธ์„œ๋Š” ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. npm์—์„œ ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ์˜ค๊ณ  ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. declare module x ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ๋˜๋Š” declare module "x" ? ๋˜๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ๊ทธ๋ƒฅ ์œ ํ˜•์„ ๋‚ด๋ณด๋‚ด์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์ด ํŒŒ์ผ์„ ๋„ฃ์–ด์•ผ ํ•˜๋Š” ํŠน์ • ์œ„์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์–ด๋–ค ๊ตฌ์„ฑ ์˜ต์…˜์„ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? typeRoots ? types ? paths ? include ? ๋˜๋Š” ๋ฌด์—‡์„? - ์ง€๊ธˆ๊นŒ์ง€ ๋‚ด๊ฐ€ ์ฐพ์€ ๊ฒƒ์€ ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€, ์ž˜๋ชป ์„ค๋ช…๋œ ๊ตฌ์„ฑ ์˜ต์…˜, ์˜ค๋ž˜๋œ SO ์งˆ๋ฌธ๋ฟ์ž…๋‹ˆ๋‹ค.

ํƒœ๊ทธ: docs

์˜คํ”„๋ผ์ธ ๋ฌธ์„œ ๋ถ€์กฑ

git ๋˜๋Š” npm ์™€ ๊ฐ™์€ ์ตœ์‹  ๊ธฐ๋ณธ ๊ฐœ๋ฐœ ๋„๊ตฌ์—๋Š” ์˜คํ”„๋ผ์ธ ๋ฌธ์„œ/์ฐธ์กฐ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ์ž์ฒด ๋ช…๋ น ํ•˜์œ„ ์ง‘ํ•ฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ:

$ git help ls-remote
$ npm help search 

๊ทธ๋Ÿฐ ๊ธฐ๋Šฅ์ด ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์š”(TS๋Š” ์กฐ๊ธˆ ๋‹ค๋ฅด์ง€๋งŒ).
์‚ฌ์ดํŠธ/github ๋“ฑ์„ ์ฐธ์กฐํ•  ํ•„์š” ์—†์ด help ์™€ ๊ฐ™์€ ๋ช…๋ น์„ ํ†ตํ•ด ๋กœ์ปฌ์—์„œ ๋ฌธ์„œ๋ฅผ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ tsc help tsc # basic CLI arguments desc
$ tsc help config # opens up html page of the tsconfig.json docs
$ tsc help v3.5 # opens up html page changelog
$ tsc help enum # finds pages containing `enum` type and hints their names/opens them up

ํƒœ๊ทธ: offline , search , cli , local

์˜ˆ์ œ์—๋Š” ๋” ๋‚˜์€ ๊ตฌ๋ณ„ ์ƒ‰์ƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค!

๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

const whomstve = (name: string) => name + 'is life'

ํ˜„์žฌ ์ƒํƒœ:

const whomstve = (name: string) => name + 'is life'

์•ฝ๊ฐ„์˜ ํŒŒ๋ž€์ƒ‰์ด ์žˆ์ง€๋งŒ ๊ทธ๋ฟ์ž…๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„, ์ €๋Š” ์ง€๋‚œ ํ•œ ๋‹ฌ ๋™์•ˆ ์ผ๋ฐ˜์ ์ธ ์‚ฌ์ดํŠธ ๊ตฌ์กฐ์™€ ์ „์ฒด ๋ฌธ์„œ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜๋ฉด์„œ ์ด ๋ฌธ์ œ๋ฅผ ์ฃผ์‹œํ•ด ์™”์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ๊ณ  ๋ฌธ์„œ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ์œผ๋ฉด ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์กฐ๊ธˆ ๋” ์ดํ•ดํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด ์•ฝ๊ฐ„์˜ ๋’ค์„ž์ž„๊ณผ ํ•จ๊ป˜ ๋ฐ˜์‘์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ด๋Ÿฌํ•œ ๋ชจ๋“  ์‚ฌํ•ญ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

API ๋ฌธ์„œ๋Š” ๋ฆด๋ฆฌ์Šค ์ •๋ณด์—๋งŒ ์กด์žฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋ถ€๋ถ„์ ์œผ๋กœ ์ง€๊ธˆ ๋ฆด๋ฆฌ์Šค ๋…ธํŠธ์—๋งŒ ์žˆ๋Š” ๊ฒƒ์ด ํ™•์‹คํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊นŒ๋‹ค๋กœ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์–ธ์–ด ๋ฐ ๊ตฌ๋ฌธ๊ณผ ๊ด€๋ จํ•˜์—ฌ ์ „์ฒด ์–ธ์–ด๋ฅผ ์ƒˆ๋กญ๊ฒŒ ์‚ดํŽด๋ณผ ์ƒˆ ํ•ธ๋“œ๋ถ์œผ๋กœ ์ด ๋ฌธ์ œ๊ฐ€ ์ˆ˜์ •๋˜๊ณ  ๊ฐœ์„ ๋˜๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋จธ์ง€ ๋ฌธ์„œ์—์„œ๋Š” ์ƒˆ ์‚ฌ์ดํŠธ๋งต ์ค‘ ์ผ๋ถ€๊ฐ€ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ๋ฅผ ๋‹ค๋ฃจ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ WIP์ž…๋‹ˆ๋‹ค.

์›น์‚ฌ์ดํŠธ์—์„œ ๊ฒ€์ƒ‰ํ•˜์ง€ ์•Š์Œ

์˜ˆ, ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ƒˆ ์‚ฌ์ดํŠธ์—์„œ ํ™•์‹คํžˆ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์›น์‚ฌ์ดํŠธ๋Š” ํ์‡„ ์†Œ์Šค์ž…๋‹ˆ๋‹ค

๊ฒฐ์ •๋œ! https://github.com/microsoft/TypeScript-website

์ƒˆ ์ž‘์—…์€ ๋งˆ์Šคํ„ฐ ๋ธŒ๋žœ์น˜์—์„œ ๋ฒ—์–ด๋‚˜์ง€๋งŒ ์ง€๊ธˆ์€ ์ด์ „ ์‚ฌ์ดํŠธ ์œ„์—์„œ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๊ณ  PR์„ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. TypeScript ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ์—ฌ๊ธฐ๋กœ ๋ฌธ์ œ๋ฅผ ์˜ฎ๊ธฐ๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ๋” ์‰ฝ๊ฒŒ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์œ ํ‹ธ๋ฆฌํ‹ฐ ํŽ˜์ด์ง€๊ฐ€ ์ตœ์‹  ์ƒํƒœ๊ฐ€ ์•„๋‹˜

๊ฒฐ์ •๋œ! ๋ถ€๋ถ„์ ์œผ๋กœ ๋‚˜๋Š” ๋งŽ์€ PR์„ ๋ณ‘ํ•ฉํ–ˆ๊ณ  ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์ตœ์‹  ํ•ธ๋“œ๋ถ์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํƒ์ƒ‰์— ํ‘œ์‹œ๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค(์›น ๊ฒ€์ƒ‰์—๋งŒ ํ•ด๋‹น).

ํ–ฅ์ƒ๋œ TS ๊ตฌ์„ฑ ์˜ต์…˜ ์„ค๋ช…

๋‚˜๋Š” ์ฃผ๋ง์— ์ด๊ฒƒ์„ ํƒ๊ตฌํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค(์ปดํŒŒ์ผ๋Ÿฌ์™€ ์›น์‚ฌ์ดํŠธ๊ฐ€ ์ด ๋ฌธ์„œ์— ๋Œ€ํ•ด ๋™์ผํ•œ ์ดˆ๊ธฐ ๋ฐ์ดํ„ฐ ์†Œ์Šค๋ฅผ ๊ณต์œ ํ•˜๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์›น์‚ฌ์ดํŠธ๊ฐ€ ๋” ๋งŽ์€ ์ปจํ…์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ๊ทธ ์œ„์— ๋ฌด์—‡์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋Š”์ง€)

์ง€๊ธˆ๊นŒ์ง€ ๋ฐฉํ–ฅ์˜ ๋ช‡ ๊ฐ€์ง€ ์˜ˆ:

๋†€์ดํ„ฐ๋Š” ๋Œ€์•ˆ๋งŒํผ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ฒฐ์ •๋œ! ๋‚˜๋Š” ์ด๊ฒƒ์ด ๋‚ด๊ฐ€ ๋†€์ดํ„ฐ๊ฐ€ ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ผ๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฐฉํ–ฅ์˜ ๊ธ์ •์ ์ธ ๋””๋”ค๋Œ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” Playground๊ฐ€ ์ง„์ •์œผ๋กœ ์ตœ๊ณ ์˜ ๋™์ข…์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์–ด๋–ค ๋ชจ์–‘๊ณผ ๋Š๋‚Œ์„ ๊ฐ€์ ธ์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ๋ณด๋‹ค ์žฅ๊ธฐ์ ์ธ ๊ด€์ ์„ ์ œ๊ณตํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์˜ˆ์ œ ๋ชจํ˜•์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Screen Shot 2019-07-22 at 6 03 24 PM ( figma ํƒ์ƒ‰ ํด๋ฆญ )

ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ์šฉ ์งง์€ ๊ณต์œ  URL

๊ณ ์ •, ์•„๋ž˜ ์ฐธ์กฐ

์œ ํ˜• ์ด๋ฆ„์— ๋Œ€ํ•œ ์šฉ์–ด์ง‘ ์—†์Œ

๋‚˜๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ๋ฐฐ์šฐ๋ฉด์„œ ๋‚ด ์ž์‹ ์˜ ๊ธ€์„ ์“ฐ๊ธฐ ์‹œ์ž‘

[๋†€์ดํ„ฐ ex1, ๋†€์ดํ„ฐ ex2]

์ ์ง„์ ์œผ๋กœ TS๋ฅผ ๊ฐ€๋ฅด์น˜์ง€ ์•Š์Œ

์ด๊ฒƒ์€ #29288( New handbook ์Šคํฌ๋กค)์˜ ์ผ๋ถ€๋ฅผ ์ธ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ ํ•ธ๋“œ๋ถ์—์„œ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

  1. ๋งž์ถคํ˜• ์†Œ๊ฐœ(ํ•ต์‹ฌ ํ•ธ๋“œ๋ถ ์„ค์ •)

    1. ํ•ต์‹ฌ ํ•ธ๋“œ๋ถ(๋ชจ๋“  ์‚ฌ๋žŒ์ด ์ฝ์Šต๋‹ˆ๋‹ค)

    2. ์ฐธ์กฐ ํŽ˜์ด์ง€(์ผ์ข…์˜ ์‹ฌ์ธต ๋ถ„์„/๋ถ€๋ก)

ํšจ๊ณผ์ ์œผ๋กœ ๊ทธ๊ฒƒ์€ ๋ช‡ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์ถœ๋ฐœ์ ์„ ๊ฐ€์ง€๊ณ  ์ฃผ๋ณ€ ์ƒํƒœ๊ณ„์— ์ต์ˆ™ํ•ด์ง€๋ฉด ์–ธ์–ด๋ฅผ ๊ฐ€๋ฅด์น˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€์— ์žˆ๋Š” ๋ชจ๋“  ๋‚ด์šฉ์ด ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ, ์‹œ์ž‘์— ๋ถˆ๊ณผํ•˜๋‹ค. ํ˜„์žฌ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์‚ฌ์ดํŠธ๋งต์€ ๋งค์šฐ ๊ด‘๋ฒ”์œ„ํ•˜๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์œ ํ˜•์˜ ๋ฌธ์ œ์— ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ์‚ฌ์ดํŠธ ๋งต ์š”๋ฆฌ ์ฑ…๊ณผ ๊ฐ€์ด๋“œ์— ์•ฝ๊ฐ„์˜ ์—ฌ์ง€๋ฅผ ๋‚จ๊ฒผ์Šต๋‹ˆ๋‹ค. ์š”๋ฆฌ ์ฑ…์€ ๋” ๋งŽ์€ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ง€์›์„ ์žฅ๋ คํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฐ€์ด๋“œ ์ œ๊ณต

๋‚˜๋Š” ํ˜„์žฌ TypeScript ์›น์‚ฌ์ดํŠธ์— ์žˆ๋Š” ํ˜„์žฌ ์ฝ”๋“œ ์ƒ˜ํ”Œ์„ ์ •๋ ฌํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ณต์‹ ๋ฌธ์„œ๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„๊ตํ•˜์—ฌ ์–ด๋–ค ์ƒ˜ํ”Œ์ด ๋” ๋‚˜์€์ง€ ์—ฌ์ „ํžˆ ํŒŒ์•… ์ค‘์ž…๋‹ˆ๋‹ค(์˜ˆ: ํ”„๋กœ์ ํŠธ๊ฐ€ ์ด์ œ ๊ธฐ๋ณธ์ ์œผ๋กœ TypeScript๋ฅผ ์ง€์›ํ•˜๊ณ  ์ž์ฒด ๋ฌธ์„œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ).

์œ„์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์‚ฌ์ดํŠธ์˜ ์š”๋ฆฌ ์ฑ…๊ณผ ์‹ค์ œ ๊ฐ€์ด๋“œ ์„น์…˜์€ ์ด๊ฒƒ์„ ๋‹ค๋ฃจ๊ธฐ์— ์ถฉ๋ถ„ํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์–ธ์–ด ์‚ฌ์–‘์ด ์˜ค๋ž˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ, ๊ธฐ๋ณธ ์ €์žฅ์†Œ์—์„œ ์™„์ „ํžˆ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ƒˆ ์‚ฌ์ดํŠธ์—์„œ๋Š” ์–ธ๊ธ‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ ์ƒ˜ํ”Œ์— ๋Œ€ํ•ด ๋” ๋‚˜์€ IDE์™€ ์œ ์‚ฌํ•œ ๊ฒฝํ—˜ ์ œ๊ณต

์ด๊ฒƒ์€ ํ˜„์žฌ ์ƒˆ ํ•ธ๋“œ๋ถ ์‚ฌ์ดํŠธ ์— ์žˆ์ง€๋งŒ ์ƒˆ ์‚ฌ์ดํŠธ์—๋„ ์ด์‹ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ฐ•์กฐ ํ‘œ์‹œ ๋ฐ ์ธ๋ผ์ธ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ œ๊ณตํ•˜๋Š”๋ฐ, ์ด๋Š” ์ œ๊ฐ€ ๋งค์šฐ ๊ธฐ์˜๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ปดํŒŒ์ผ๋Ÿฌ ์˜ค๋ฅ˜ ์ƒ‰์ธ ํŽ˜์ด์ง€

์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ถ€๋ถ„์ ์œผ๋กœ TypeScript์—๋Š” ๋งŽ์€ ์˜ค๋ฅ˜ ์ฝ”๋“œ๊ฐ€ ์žˆ์œผ๋ฉฐ ๊ฝค ์ •๊ธฐ์ ์œผ๋กœ ๋ณ€๊ฒฝ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์™„์ „ํžˆ ์ž‘๋™ํ•˜๋Š” ์‚ฌ์ดํŠธ์™€ ๋ฌธ์„œ๊ฐ€ ์žˆ์œผ๋ฉด ๋‹ค์‹œ ๋Œ์•„์˜ฌ ๊ฐ€์น˜๊ฐ€ ์žˆ์ง€๋งŒ ์ง€๊ธˆ์€ ๋ฐฑ ๋ฒ„๋„ˆ์— ์žˆ์Šต๋‹ˆ๋‹ค.

๋” ๋งŽ์€ ์‹ค์ œ ์‚ฌ๋ก€ ๋ณด๊ธฐ

์ง€๊ธˆ๊นŒ์ง€์˜ ์ƒˆ ํ•ธ๋“œ๋ถ์€ ์ด ๋ถ€๋ถ„์„ ์ž˜ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋จธ์ง€ ๋ฌธ์„œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‚ด๊ฐ€ ๋ณด๋Š” ๋ชจ๋“  ๊ฒƒ์„ ๊ทธ๋Ÿฐ ์‹์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์ดํŠธ์˜ ๋ชจ๋ฐ”์ผ ์ง€์›์ด ์•ฝํ•จ

์ƒˆ ์‚ฌ์ดํŠธ์— Microsoft ๋””์ž์ธ ์‹œ์Šคํ…œ(์œ ์ฒด)์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ชจ๋ฐ”์ผ ์ง€์›(์ ‘๊ทผ์„ฑ ํฌํ•จ)์ด "๋Œ€๋ถ€๋ถ„ ๋ฌด๋ฃŒ๋กœ" ์ œ๊ณต๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋†€์ดํ„ฐ๋งŒํผ ๋ณต์žกํ•˜๊ณ  ์กฐ๊ธˆ ๋” ๊นŒ๋‹ค๋กญ๊ธฐ ๋•Œ๋ฌธ์— ํœด๋Œ€ํฐ ํฌ๊ธฐ์˜ ๋ชจ๋ฐ”์ผ์—๋Š” ํƒ์ƒ‰/ํƒ์ƒ‰ ์‚ฌ๊ณ  ๋ฐฉ์‹์ด ์ ํ•ฉํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ €๋Š” ์ฝ๊ธฐ ์ „์šฉ ๊ฒฝํ—˜์— ์กฐ๊ธˆ ๋” ๊ฐ€๊นŒ์šด ๋ชจํ˜•์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

tsc ๋„์›€๋ง ๊ฐœ์„  ์‚ฌํ•ญ ์‚ดํŽด๋ณด๊ธฐ

๋‚˜๋Š” ์ด์— ๋Œ€ํ•ด ๊ฐœ๋ฐฉ์ ์ด์ง€๋งŒ typescript CLI๋Š” ์‹ค์ œ๋กœ ํ•˜๋‚˜์˜ ๋ช…๋ น, ์ปดํŒŒ์ผ์ž…๋‹ˆ๋‹ค(์ด๊ฒƒ์ด ํ•˜์œ„ ๋ช…๋ น์— ๋Œ€ํ•œ ๋„์›€์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ์ด์œ ์ž…๋‹ˆ๋‹ค(--init์ด ์•ฝ๊ฐ„ ๊นจ์ง)).

DTS ๊ฐœ์„ ์— ๋Œ€ํ•œ ์กฐ์–ธ ์ œ๊ณต

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

๋ฌธ์„œ/๋ธ”๋กœ๊ทธ/๋ฆด๋ฆฌ์Šค ๋…ธํŠธ ํ†ตํ•ฉ

๊นŒ๋‹ค๋กœ์šด ๋ฌธ์ œ๋กœ ๋ธ”๋กœ๊ทธ/๋ฆด๋ฆฌ์Šค ๋…ธํŠธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์ด ์—†์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค๊ณผ ํ•จ๊ป˜ Microsoft ์ œํ’ˆ ๋ธ”๋กœ๊น… ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ด ๋ชจ๋“  ๊ฒƒ์„ ์›น์‚ฌ์ดํŠธ ์ž์ฒด๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์ด ์ข‹์€ ์ƒ๊ฐ์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์ด ์‹œ๊ฐ„์— ๋” ๊ฐ€๊น๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋” ์‰ฌ์šด ์ธก๋ฉด์—์„œ, ๋‚˜๋Š” ํ™•์‹คํžˆ ์œ„ํ‚ค์—์„œ ์ด๋Ÿฐ ์ข…๋ฅ˜์˜ ์ •๋ณด๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์›น์‚ฌ์ดํŠธ ๋‚ด๋ถ€์—๋งŒ ๋‚จ๊ฒจ๋‘๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค(์‚ฌ์ดํŠธ ๊ฒ€์ƒ‰์— ์˜ํ•ด ์ƒ‰์ธ์ด ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ๋Š” ๊ณณ) - ์ €๋Š” ํŠน๋ณ„ํžˆ ๊ธฐ์—ฌํ•˜๊ธฐ ์œ„ํ•ด TypeScript ์œ„ํ‚ค๋ฅผ ๋‚จ๊ฒจ๋‘๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. TypeScript ๋ฐ TypeScript ์ปดํŒŒ์ผ๋Ÿฌ API ์ž‘์—…(์˜ˆ: import * as ts from โ€œtypescriptโ€ ๋˜๋Š” ์–ธ์–ด ์„œ๋ฒ„ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋นŒ๋“œ ์‹œ)

๊ฐ€์žฅ ํ”ํžˆ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์œ„์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ •๋ง ๊ด‘๋ฒ”์œ„ํ•œ FAQ ํŽ˜์ด์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํŽ˜์ด์ง€๋Š” Wiki์—์„œ๋งŒ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค(TS๋ฅผ ์‚ฌ์šฉํ•œ ์ง€ 3๋…„).

์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์‚ผ์•„ ๊ท€ํ•˜์˜ ์‘๋‹ต๊ณผ ํ•จ๊ป˜ ๊ธฐ๋ณธ ์›น์‚ฌ์ดํŠธ๋กœ ๋Œ์–ด์˜ค๊ธฐ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ตฌ๋ฌธ ๊ฐ•์กฐ ํ‘œ์‹œ ์ถ”๊ฐ€

๋„ค ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!


์ „๋ฐ˜์ ์œผ๋กœ, ์šฐ๋ฆฌ๋Š” ์ด๋“ค ์ค‘ ๋งŽ์€ ๋ถ€๋ถ„์„ ์ ๊ทน์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๊ฑฐ๋‚˜ ์ž‘์—…ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์„œ ์ž‘์—…์„ ๊ณ„์†ํ•˜๋ฉด์„œ ๋” ๋งŽ์€ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

๋ฉ‹์ง„ ์ž‘์—… ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @orta !

Playground ํŽธ์ง‘๊ธฐ์—์„œ ๋ณ„๋„์˜ ํ™˜๊ฒฝ์„ ๋งŒ๋“œ๋Š” ๋Œ€์‹  VSCode tsconfig ํ™˜๊ฒฝ์„ ์ฐจ์šฉ/๊ฐœ์„ /ํ˜‘์—…ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

๋†€์ดํ„ฐ๋ฅผ ๋” ์ข‹๊ฒŒ ๋งŒ๋“ค๊ณ  VSCode์˜ ๊ธฐ์กด ๊ฒฝํ—˜์€ ์ด๋ฏธ ์ ˆ๋ฐ˜ ์ˆ˜์ค€์ž…๋‹ˆ๋‹ค.

๋ฌด์Šจ ๋ง์”€์ด์‹ ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. VS Code์˜ ์ž๋™ ์™„์„ฑ JSON ์Šคํ‚ค๋งˆ ๊ธฐ๋Šฅ์ด ๋งˆ์Œ์— ๋“œ์‹œ๋‚˜์š”? JSON ํŽธ์ง‘๊ธฐ ๋ถ€๋ถ„์— ํฌํ•จํ•  ๊ณ„ํš์ด์—ˆ์ง€๋งŒ ๋ ˆ์ด๋ธ”์ด ์žˆ๋Š” GUI๋กœ ๋ชจ๋“  ์˜ต์…˜์— ๋Œ€ํ•œ ๊ฐœ์š”๋Š” ๋ชจ๋“  ์˜ต์…˜์„ ๋ณด๊ณ  ์„ ํƒํ•˜๊ณ  ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์šฉํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

@orta ์ƒˆ ํ•ธ๋“œ๋ถ์ด ๊ณต์‹ ํ•ธ๋“œ๋ถ์ด ๋˜๋ฉด ํ˜„์žฌ ํ•ธ๋“œ๋ถ์˜ ์„น์…˜์„ ๊ฐ€๋ฆฌํ‚ค๋Š” URL์ด ๊นจ์ง€๋‚˜์š”? ์•„๋‹ˆ๋ฉด ์ƒˆ ํ•ธ๋“œ๋ถ์ด ๋‹ค๋ฅธ URL์— ์žˆ์Šต๋‹ˆ๊นŒ? ์ง€๋‚œ ๋ช‡ ๋…„ ๋™์•ˆ SO ๋‹ต๋ณ€์— ํ•ธ๋“œ๋ถ ๋งํฌ๋ฅผ ๋งŽ์ด ๋„ฃ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. (์ผ๋ฐ˜ ๋ฌธ์„œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ณ„ํš์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ๋” ๋‚˜์€ ๋ฌธ์ œ๋‚˜ ์œ„์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?)

@orta @jcalz ๊ฐ™์€ ์งˆ๋ฌธ์„ ํ•˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ 2.5K๊ฐ€ ๋„˜๋Š” SO ๋‹ต๋ณ€์ด ์žˆ๋Š”๋ฐ ๋งํฌ๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  ๋‹ต๋ณ€์„ ์ฐพ๊ณ  ๋ชจ๋‘ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์€ ์‹คํ˜„ ๊ฐ€๋Šฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด์ƒ์ ์œผ๋กœ๋Š” ์กฐ๊ฐ์ด ์žˆ๋Š” ๋งํฌ๊ฐ€ ๊ณ„์† ์ž‘๋™ํ•˜๊ณ  ์ƒˆ ์œ„์น˜๋กœ ๋ฆฌ๋””๋ ‰์…˜๋ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋งคํ•‘์„ ๋„์™€๋“œ๋ฆด ์˜ํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ, ์ €๋Š” URI ๋ฅผ

ํ•ธ๋“œ๋ถ์— ๋Œ€ํ•œ ์ƒˆ URL ๋ฃจํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ (์˜ˆ: docs/handbook/x.html ์•„๋‹ˆ์ง€๋งŒ ์•„๋งˆ๋„ /handbook/x.html ) ์ด์ „ ํŽ˜์ด์ง€๋ฅผ ๋‹ค์Œ ์ง€๋„๋ฅผ ํ†ตํ•ด ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ช‡๊ฐ€์ง€ ์ข…๋ฅ˜.

์ด ์ €์žฅ์†Œ์˜ ๋ชจ๋“  github ๋ ˆ์ด๋ธ”์ด ์˜๋ฏธํ•˜๋Š” ๋ฐ”๋ฅผ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค ์ค‘ ์ผ๋ถ€๋Š” ์ž๋ช…ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ๊ฒƒ๋“ค์€ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

image

์˜ˆ๋ฅผ ๋“ค์–ด, "์ œ์•ˆ ํ•„์š”"๋Š” ๋‚˜์—๊ฒŒ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ ˆ์ด๋ธ”์— ์ด๋ฏธ ์ผ๋ถ€ ๋ ˆ์ด๋ธ”๊ณผ ๊ฐ™์ด ๋” ๊ธด ์„ค๋ช…์ด ์žˆ์œผ๋ฉด ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

_specific_ ์ปดํŒŒ์ผ๋Ÿฌ ์˜ต์…˜์— ๋Œ€ํ•œ ๋ฌธ์„œ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ ํŒ€์€ TypeScript์— ๋Œ€ํ•ด ์ƒ๋Œ€์ ์œผ๋กœ ์ƒˆ๋กญ๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ์˜ tsconfig.json ๋Š” ์ž์ฃผ ๋ณ€๊ฒฝ๋˜๋ฉฐ ์ข…์ข… ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ํŠน์ • ์ปดํŒŒ์ผ๋Ÿฌ ์˜ต์…˜์— ๋Œ€ํ•œ ๋ฌธ์„œ, ์ฆ‰ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ์•ˆ๋‚ดํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

https://www.typescriptlang.org/docs/handbook/compiler-options.html#strict-null-checks
(or)
https://www.typescriptlang.org/docs/handbook/compiler-options.html#strictNullChecks

์ด์™€ ๊ฐ™์€ ๋งํฌ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์ง€๋งŒ ์ž‘๋™ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ํ•ด๋‹น ํŽ˜์ด์ง€์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ HTML ID๋Š” #compiler-options์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋งจ ์œ„์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋‹ค์ง€ ์œ ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฐ ์˜ต์…˜์— ๋Œ€ํ•œ ID๊ฐ€ ์žˆ์œผ๋ฉด ์‚ฌ๋žŒ๋“ค์ด ํŽ˜์ด์ง€์˜ ์›ํ•˜๋Š” ๋ถ€๋ถ„.

ํƒœ๊ทธ: compiler

@Tyler-Murphy ์ง€๊ธˆ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

@ssalka - ์˜ˆ, ์ƒˆ๋กœ์šด tsconfig ๋ฌธ์„œ์— ํฌํ•จ๋  ์ข‹์€ ํ˜ธ์ถœ

--

์ด ๋ฌธ์ œ๋ฅผ ๋‹ซ๊ณ  ์•ž์œผ๋กœ ํ•ธ๋“œ๋ถ๊ณผ ์ƒˆ ์‚ฌ์ดํŠธ์— ๋” ๋“ค์–ด๊ฐ€๋ฉด ๊ฐ™์€ ์ „์ œ๋กœ ์ƒˆ ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ด๊ฒ ์Šต๋‹ˆ๋‹ค ๐Ÿ‘

ํƒ€์ดํ”„์Šคํฌ๋ฆฝํŠธ ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ:
๋ฏธ์น  ๊ฒƒ ๊ฐ™์ง€๋งŒ ํ”„๋กœ์ ํŠธ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ„๋‹จํ•œ '๊ณต์œ ' ์˜ต์…˜์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค(์˜ˆ: github ๋ฌธ์ œ์— ์ถ”๊ฐ€).
'๋‚ด๋ณด๋‚ด๊ธฐ' ์•„๋ž˜์— ๋ชจ๋“  ๋งํฌ๊ฐ€ ํ‘œ์‹œ๋˜์ง€๋งŒ '๊ณต์œ '๋Š” ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํƒ€์ดํ”„์Šคํฌ๋ฆฝํŠธ ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ:
๋ฏธ์น  ๊ฒƒ ๊ฐ™์ง€๋งŒ ํ”„๋กœ์ ํŠธ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ„๋‹จํ•œ '๊ณต์œ ' ์˜ต์…˜์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค(์˜ˆ: github ๋ฌธ์ œ์— ์ถ”๊ฐ€).
'๋‚ด๋ณด๋‚ด๊ธฐ' ์•„๋ž˜์— ๋ชจ๋“  ๋งํฌ๊ฐ€ ํ‘œ์‹œ๋˜์ง€๋งŒ '๊ณต์œ '๋Š” ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

image

์˜ˆ: ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ ๋งํฌ

์ƒˆ๋กœ์šด ์‚ฌ์ดํŠธ๋Š” ์ •๋ง ์ข‹์•„ ๋ณด์ž…๋‹ˆ๋‹ค! ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์ด ์š”์ฒญ (์ปดํŒŒ์ผ๋Ÿฌ ์˜ต์…˜์— ๋Œ€ํ•œ ์•ต์ปค ๋งํฌ)์ด ๐Ÿ˜•์—์„œ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•„์ฐจ๋ ธ์Šต๋‹ˆ๋‹ค.

์ •๋ง ์‰ฝ๊ฒŒ ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์š”์ฒญ์ด ๋  ๊ฒƒ ๊ฐ™๊ณ  ์‹ ๊ทœ ์ด๋ฏผ์ž๋“ค์—๊ฒŒ ๋งŽ์€ ๋„์›€์ด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ–ฅํ›„ ์—…๋ฐ์ดํŠธ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค!

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰