์ฌ๋ฌ๋ถ, Microsoft์ TypeScript ํ์ ๊ฐ์ ๋ ํธ๋๋ถ ๊ณผ ์ผ์นํ๋๋ก ์น ์ฌ์ดํธ๋ฅผ ์์ ํ ์ฌ๊ณ ํ ๊ณํ์ ๋๋ค. ํ์ ์ฌ์ดํธ์ ํ์ฌ ๊ฒฐํจ๊ณผ ๊ฐ์ ํ๊ณ ์ถ์ ๋ถ๋ถ์ ๋ํด ๋ง์ ์์ด๋์ด๋ฅผ ๊ฐ์ง๊ณ ์์ง๋ง ๋ค๋ฅธ ์ฌ๋๋ค์๊ฒ ์์ด๋์ด๋ฅผ ์ ์ํ ์ ์๋ ๊ธฐํ๋ฅผ ์ ๊ณตํ๊ณ ์ถ์ต๋๋ค.
์ฌ๋๋ค์ด ์ด ๋ฌธ์ ์ ๋ตํ ์ ์๋ https://github.com/react-native-community/discussions-and-proposals/issues/64 ์ React Native ํ์์ ์ด๋ฌํ ์ข ๋ฅ์ ํ ๋ก ์ ์ ์๋ํ๋ ํ์์ ๋ณด์์ต๋๋ค. ๋๊ธ๋น ํ๋์ ์์ด๋์ด๋ก
๋น์ ์ ๋ค๋ฅธ ์ฌ๋์ ๋ํ ๊ฒ์ ๋ฐ ํธ์์ฑ์ ๋ถ๋ฅ์ ๋์์ดํ๋ ค๋ ๊ฒฝ์ฐ ํ๊ทธ๋ฅผ ์ถ๊ฐ ์น ์ฌ์ดํธ, ๋ฌธ์, ์์, ํ๋ก์ธ์ค๊ฐ ๋ฐ์ํ๋ ๋ฌธ์ ๋น 1 ์ฝ๋ฉํธ, ๋์ดํฐ ๋ฑ์ผ๋ก ์๋ต ๋ง์ญ์์ค. ๊ธฐ์กด ๋ฌธ์ ์ ๋ํ ๋งํฌ๊ฐ ์๋ค๋ฉด ๊ทธ๊ฒ๋ ๋งค์ฐ ์ ์ฉํ ๊ฒ์ ๋๋ค.
๋๊ตฐ๊ฐ๊ฐ ์ด๋ฏธ ๊ทํ์ ์์ด๋์ด๋ฅผ ์ ์ํ ๊ฒฝ์ฐ ์ด๋ชจํฐ์ฝ ๋ฐ์์ ์ฌ์ฉํ์ฌ +1ํ์ญ์์ค. ์ค๋ณต ๋ฐ ์ฃผ์ ์ ๋ค๋ฅธ ๋ต๊ธ์ ์ญ์ ๋ฉ๋๋ค. ์ฃผ์ ์ ๋ ๋ง์ ๊ฒ์ ์ถ๊ฐํ๊ณ ์ถ๋ค๋ฉด ์ฒจ๋ถ๋ ๋ฌธ์ ๊ฐ ์๋์ง ํ์ธํ๊ณ ๊ฑฐ๊ธฐ์ ๋ ๋ง์ ํผ๋๋ฐฑ์ ๋จ๊ฒจ์ฃผ์ธ์.
TypeScript ์ธ์ด ์์ฒด์ ๋ํ ํ ๋ก ์ ์ด ์ค๋ ๋๋ฅผ ์ฌ์ฉ ํ์ง ๋ง์ญ์์ค. ๋ชจ๋ ๋ฌธ์ ์ ๋ง์ฐฌ๊ฐ์ง๋ก ํ๋ ๊ฐ๋ น์ ์ค์ํ์ญ์์ค. ์ฐ๋ฆฌ๋ ๋ชจ๋ ๊ฐ์ ์ ์ํฉ๋๋ค.
ํ ํ๋ฆฟ - ์์ ๋กญ๊ฒ ๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ๊ธฐ
### [title]
[message]
Tags: `[tags]`
๋ด ๊ฒ ์ค ํ๋:
์์ ๋ฐ ๊ฐ์ ์ ๊ธฐ์ฌํ๊ณ ์ถ์ง๋ง ๋ฅ๋ ฅ์ด ์๊ธฐ ๋๋ฌธ์
repo๊ฐ โโ๋น๊ณต๊ฐ์ธ ๋์ ์ด ์์
์ ์ํํ๋ ค๋ฉด
ํ๊ทธ: oss
์๋ก์ด ์ ํธ๋ฆฌํฐ ์ ํ์ ์ข
์ข
๋๋ฝ๋๊ฑฐ๋ ํธ๋๋ถ์ "์ ํธ๋ฆฌํฐ ์ ํ" ํ์ด์ง์ ์ถ๊ฐ๋์ง ์์ต๋๋ค(์: Parameters<T>
). ๋๋ ์ข
์ข
ํธ๋๋ถ ๋์ lib.es5.d.ts
๊ฒ์์ ์์กดํด์ผ ํฉ๋๋ค.
ํ๊ทธ: docs
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
TypeScript ํ๋ก์ ํธ๋ ์ด์ ๋ํ ๋ฌธ์๋ฅผ ์์ ํด์ผ ํฉ๋๋ค. ํ์คํ ํ์ํ ๋ ๋ฌธ์๋ ๋ค์ ์์น์ ์์ต๋๋ค.
TS ๋ฌธ์์๋ ๊ทธ๊ฒ์ด ๋ฌด์์ธ์ง, ์ ์ฌ์ฉ๋๋์ง์ ๋ํ ๊ฐ์๊ฐ ํฌํจ๋ ์ ์์ผ๋ฉฐ ๊ณต์ ์ฌ์ดํธ๋ฅผ ๋ ์ด์ ์ฌ์ฉํ์ง ์์ ์ ์์ต๋๋ค.
ํ๊ทธ: definitely-typed
(๊ฐ๋ ์ฑ์ ๋์ด๊ธฐ ์ํด ํธ์ง๋จ) ๋ฌธ์๊ฐ ์๋ํ ๋ช ํํ "ํ๋ฅด์๋"๊ฐ ์์ ๋ ๋ฌธ์๊ฐ ๊ฐ์ฅ ํจ๊ณผ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ด ๋ฌธ์๊ฐ ๋ง๋ค์ด์ก์ ๋ ES6์ ์์ง ์กด์ฌํ์ง ์์์ต๋๋ค. ์ด ๋ฌธ์๊ฐ ๋ง๋ค์ด์ง๋ฉด ์คํ์ ๋ชจ๋ TS๋ฅผ ๋ฐฐ์ธ ์ ์์ต๋๋ค.
์๋๊ฐ ๋ฐ๋์๋ค.
๋๋ react-typescript-cheatsheet bc๋ฅผ ๋ง๋ค์์ต๋๋ค. ํนํ TS ๋ฌธ์๋ ์ด๋ฏธ es6์ ์๊ณ ์๊ณ ํ ๋ฒ์ ๊ณ ๊ธ TS๋ฅผ ๋ฐฐ์ฐ๊ณ ์ถ์ง ์์ ์ฌ๋๋ค์๊ฒ ์๋น์ค๋ฅผ ์ ๊ณตํ์ง ์๋๋ค๊ณ ๋๊ผ์ต๋๋ค. ๋ฐ๋ผ์ ์ฒ์์ผ๋ก TS๋ฅผ ์๋ํ๋ ์๋ จ๋ JS ๊ฐ๋ฐ์๋ฅผ ๋์์ผ๋ก ํฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ ๋ง์ด ์์ต๋๋ค. ํ์ฌ ๋ฌธ์๋ "์ฌ๊ธฐ ํด๋์ค๊ฐ ๋ฌด์์ธ์ง" ๋๋ "์ ํ ์ฐ์ฐ์ ๋ฌธ์์ ๊ฐ์ ํ์ด์ง์ ๋ฌด์์ด ์ ๋ค๋ฆญ์ด ๋ง์ด ์์ต๋๋ค."์ ๋๋ค.
ํนํ ๋ค์์ ์ง๋ณด์ ์ธ ๊ต์ฌ ์ญํ ์ ํ ์ ์๋ ๊ณ ๋ คํด์ผ ํ ํ๋ฅด์๋์ ์ ์ฒด ๋ชฉ๋ก์ด ์๋๋๋ค.
์ด๊ฒ๋ค์ ๋ชจ๋ TS ์ฑํ ์ฌ์ ์ ๋จ๊ณ์ ๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ๋งคํํ๊ณ ์ฌ๋๋ค์ด ๋ฌด์์ ํด์ผ ํ ์ง ๋ชฐ๋ผ์ ๋๋ฌด ์ด๋ ต๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ๋์ด์ง๋ ๋ฌธ์์ ์ ๋ฒฝ์ด ์๋์ง ํ์ธํด์ผ ํฉ๋๋ค.
๋ฌธ์๊ฐ ๋ค์๊ณผ ๊ฐ์ ์ ํ๋ฅผ ์์ ๋ ๋ฐ ๋ง์ ๋์์ด ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ React๋ฟ๋ง ์๋๋ผ Vue ๋ฐ Node ๋ฑ์ ๊ฒฝ์ฐ ์ฑํ์ ์ง์ํ๊ธฐ ์ํด ํน์ ๋๊ท๋ชจ ๊ฐ๋ฐ ์ปค๋ฎค๋ํฐ๋ฅผ ๋์์ผ๋ก ํ ์ ์๊ณ ๋ ๊ทธ๋์ผ ํฉ๋๋ค. ๊ธฐ๋ณธ ๋ฌธ์์์ ์ด ์์ ์ ์ํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด Vue ๋ฌธ์๋ ์ปจํ ์คํธ์ ์ค์ ์์ ์ ์ค์ ์ ๋ Cookbook๊ณผ Guide๋ฅผ ๊ตฌ๋ถ ํฉ๋๋ค.
์ด๊ฒ์ ๋ด๊ฐ ์์ํ ์ ์๋ ํ๊ธฐ ๋จ๊ณ์ TS ์ฑํ(์ฆ, TS์์ ํ๋งค๋๊ธฐ ์ํด ๋ ๋ง์ ๋ฌธ์/๋๊ตฌ/๋ณด์ฆ/ํธ๋ํ๋ฉ์ด ํ์ํ ์ฌ๋๋ค)์ ๋ํ ํฐ ์ฅ์ ๋ฌผ์ผ ๊ฒ์ ๋๋ค.
ํ๊ทธ: docs
๋ฉ์ธ ํ์ด์ง์์ ์ง์ "TypeScript ์ธ์ด ์ฌ์"์ผ๋ก ์ฐ๊ฒฐ๋ฉ๋๋ค.
GitHub์์ ์ฌ์์ ์ฝ๊ฑฐ๋ docx ๋๋ pdf๋ก ๋ค์ด๋ก๋ํ์ญ์์ค.
๊ทธ๋ฌ๋ ํด๋น ์ฌ์์ ์์ ํ ๊ตฌ์์ด๋ฉฐ(๋ฒ์ 1.8์์ ๊ณ ์ , ๋ง์ง๋ง ์ค์ ์ ๋ฐ์ดํธ๋ 2016๋ 1์) ์ ์ง ๊ด๋ฆฌ๋์ง ์์ต๋๋ค. ์ฌ์์ ๋ํ ์ธ๊ธ์ ์๋ตํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค.
ํ๊ทธ: spec
specification
outdated
๋ชจ๋ ํธ๋ฆฌํ ๋๊ตฌ ์ค๋ช , ํ์ด๋ผ์ดํธ ๋ฑ์ด ํฌํจ๋ ๋์ดํฐ์ ๊ฐ์ ์์ ฏ์ ๋ฌธ์์ ์๋ ๋ชจ๋ ์ฝ๋ ์ํ์ ์ ๊ณตํฉ๋๋ค.
์ด์์ ์ผ๋ก๋ ๋ฐฉ์ถ๋ JS/ํ์ดํ์ ํธ์งํ๊ณ ๋ณด๋ ์ ์ฒด ํ๋ ์ด๊ทธ๋ผ์ด๋๋ก ํ์ด๋์ฌ ์ ์๋ ๊ธฐ๋ฅ์ด ์์ต๋๋ค.
์ด๊ฒ์ ์์ฐ์ค๋ฝ๊ฒ ๊ณต์ TypeScript Playground ์ ์์กดํ๊ฒ ๋ ๊ฒ์ด๋ฉฐ ๋งํผ ์ข์ง ์์ต๋๋ค .
unknown
์ ๊ฐ์ ์ผ๋ถ ์ ํ ์ ๋ฆด๋ฆฌ์ค ์ ๋ณด ์๋ง ๋ฌธ์ํ
ํ๊ทธ: docs
/tests/cases/compiler ์๋ ๊ธฐ์ค์ ๊ณผ ํจ๊ป ์ ๋นํ ์ํ ๋ฌผ์ง์ฒ๋ผ ์๋ํ๋ ์์ฒญ๋ ์์ ํ์ผ์ด ์์ต๋๋ค. ์ด ๋ฉ๊ฐ๋ฐ์ดํธ๋ ๋ฌธ์/๋ฐ๋ชจ๋ก ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ทธ๊ฒ์ ๋๊ตฐ๊ฐ๊ฐ ํฅ๋ฏธ๋ก์ด ๊ตฌ๋ฌธ ์ฌ๋ก์ ๋ํ URL ๋งํฌ๋ฅผ ํ์ฉํ๊ณ ์ฌ๋๋ค์ด ๋ค๋ฅธ ํํคํ ํ ์คํธ๋ฅผ ์์ ํ๊ณ ์ ์ถํ๋ ๋ฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
์ ๋ง ์ดํดํ๊ธฐ ์ด๋ ค์ด ๋ณต์กํ 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๋ฅผ ์ ๊ท ์ฌ์ฉ์์๊ฒ ๋์ฑ ํ์ํ๋๋ก ํฉ์๋ค.
์ปดํ์ผ๋ฌ ์ต์ ํ์ด์ง์ ํ์ฌ ์ค๋ช
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
๋ฌธ์์ ๋์ ํ๊ฒฝ(๋ธ๋ผ์ฐ์ , nodeJS), ์ฌ์ฉ์ ๊ธฐ๋ณธ ์ค์ (์ฌ์ฉ์๊ฐ ์ํ๋ ๋๋ก ์๊ฒฉํ๊ฑฐ๋ ๊ด๋ํจ) ๋ฐ ํ๋ก์ ํธ ๋๋ ํฐ๋ฆฌ ๊ตฌ์กฐ์ ๋ง๋ tsconfig.json์ ์์ฑํ๋ ๋ฐ ๋์์ด ๋๋ ์์/๋ง๋ฒ์ฌ๊ฐ ํฌํจ๋์ด ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค. ํ์ฌ TS ์ปดํ์ผ๋ฌ ์ต์ ์๋ ๋ช ๊ฐ์ง ๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ์ต์ ๊ณผ ์ผ๋ถ ์ปดํ์ผ๋ฌ ํ๋๊ทธ๊ฐ ํฌํจ๋์ด ์์ด ์ธ๋ป ๋ณด๊ธฐ์ ๊ฑฐ์ ๋์ผํ ์์ ์ ์ํํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค(์: ๊ฒฝ๋ก/๋๋ ํ ๋ฆฌ/๋ฃจํธ์ ๊ด๋ จ๋ ์ผ๋ถ ์ต์ ์ ์ฐจ์ด์ ์ ๋ฌด์์ ๋๊น). ์์ฑ๋ tsconfig๋ Microsoft TypeScript ํต์ฌ ํ์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ผ์ผ ํฉ๋๋ค. ๊ธฐํ ์๋ด ์ง๋ฌธ์๋ ๋ค์์ด ํฌํจ๋ ์ ์์ต๋๋ค.
strictNullChecks
์ ๊ฐ์ ์ผ๋ถ ์๊ฒฉํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์ฌ์ธ ์ ์์ผ๋ฏ๋ก ์ฌ์ฉ์ ๊ฒฝํ์ ๋ฐ๋ผ ์ ์๋ ์ ์์)ํ๊ทธ: 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 ์ฌ์ฉ์ ๋ํ ์ ๋ณด๊ฐ ์์ง๋ง(https://github.com/microsoft/TypeScript/wiki/Using-the-Compiler-API) ํน์ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํด ์ด๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์๋ง ๋ณด์ฌ์ค๋๋ค. ์กด์ฌํ๋ ํน์ ๊ฐ์ฒด์ ๋ฉ์๋๋ฅผ ๋์ดํ๊ณ ๊ทธ๋ค์ด ํ๋ ์ผ์ ๋ํด ๋ฐฐ์ธ ์ ์๋ ๋ ๋ง์ JSDoc ์คํ์ผ ์ ๋ณด๊ฐ ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค. ์ง๊ธ ์ ๋ API๋ฅผ ๋ฐฐ์ฐ๋ ค๊ณ ํ๊ณ ์์ผ๋ฉฐ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ์์๋ด๊ธฐ ์ํด typescript ์์ค๋ฅผ ์ดํด๋ณด์์ผ ํฉ๋๋ค.
(์ํค์ ์ธ๊ธ๋ ๊ฒ์ฒ๋ผ API๊ฐ ์์ง ์์ ์ ์ด์ง ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ด ์๋ฃ๋์ง ์์ ๊ฒฝ์ฐ ๋ฌด์ํ์ญ์์ค)
ํ๊ทธ: compiler
๋ง์ ์ฌ๋๋ค์ด TypeScript๋ฅผ ๋ ๋ฒ์งธ(๋๋ ๊ทธ ์ด์) ์ธ์ด๋ก ์ฌ์ฉํฉ๋๋ค. TypeScript ํ์ต์ ๋จ์ํํ๋ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ด๋ฏธ ์๊ณ ์๋ ๊ธฐ์กด ์ธ์ด์ ๋น๊ตํ๋ ๊ฒ์ ๋๋ค. JS, Java, C#, PHP, C(+ CPP) ๋ฐ Ruby์ ๊ฐ์ ์ธ๊ธฐ ์๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
์ง๊ธ ์ฐ๋ฆฌ๋ ๋น์ ์ด JS๋ฅผ ์๊ณ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
ํ๊ทธ: tutorials
accessibilityinsights.io์ ๊ฐ์ ๋ฆฐํฐ๊ฐ ํต๊ณผํ๋์ง ํ์ธ
ํ๊ทธ: infra
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 ์์์ ์์ ์ ์์ต๋๋ค.
ํ๊ทธ: ๋์ดํฐ, ๋ชจ๋ฐ์ผ, ์ฝ๋ ํธ์ง๊ธฐ
.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์ผ๋ก ์์ฑํ๊ธฐ ๋๋ฌธ์ ์ ํ >.
ํ๋ก์ ํธ ์ค์ ์ ์ผ๋ถ๋ก Linter๋ก ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ํฌํจ์ํค์ญ์์ค. ์๋ง๋ ํ๋ก์ ํธ๊ฐ ์์ฒด์ ์ผ๋ก ์ฌ์ฉํด์ผ ํ๋ typescript-eslint์ผ ๊ฒ์ ๋๋ค.
ํ๊ทธ: linter
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'
์ฝ๊ฐ์ ํ๋์์ด ์์ง๋ง ๊ทธ๋ฟ์ ๋๋ค.
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ, ์ ๋ ์ง๋ ํ ๋ฌ ๋์ ์ผ๋ฐ์ ์ธ ์ฌ์ดํธ ๊ตฌ์กฐ์ ์ ์ฒด ๋ฌธ์์ ๋ํด ์๊ฐํ๋ฉด์ ์ด ๋ฌธ์ ๋ฅผ ์ฃผ์ํด ์์ต๋๋ค. ์ด์ ์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์๊ณ ๋ฌธ์๊ฐ ์ด๋ป๊ฒ ์๊ฒผ์ผ๋ฉด ํ๋์ง์ ๋ํด ์กฐ๊ธ ๋ ์ดํดํ๊ฒ ๋์์ต๋๋ค.
๊ฐ๋ ์ฑ์ ์ํด ์ฝ๊ฐ์ ๋ค์์๊ณผ ํจ๊ป ๋ฐ์์ ๊ธฐ๋ฐ์ผ๋ก ์ด๋ฌํ ๋ชจ๋ ์ฌํญ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ด๊ฒ์ ๋ถ๋ถ์ ์ผ๋ก ์ง๊ธ ๋ฆด๋ฆฌ์ค ๋ ธํธ์๋ง ์๋ ๊ฒ์ด ํ์คํ์ง ์๊ธฐ ๋๋ฌธ์ ๊น๋ค๋ก์ธ ๊ฒ์ ๋๋ค.
์ธ์ด ๋ฐ ๊ตฌ๋ฌธ๊ณผ ๊ด๋ จํ์ฌ ์ ์ฒด ์ธ์ด๋ฅผ ์๋กญ๊ฒ ์ดํด๋ณผ ์ ํธ๋๋ถ์ผ๋ก ์ด ๋ฌธ์ ๊ฐ ์์ ๋๊ณ ๊ฐ์ ๋๊ธฐ๋ฅผ ๊ธฐ๋ํฉ๋๋ค. ๋๋จธ์ง ๋ฌธ์์์๋ ์ ์ฌ์ดํธ๋งต ์ค ์ผ๋ถ๊ฐ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ๋ฅผ ๋ค๋ฃจ์ด์ผ ํ๋ค๊ณ ์๊ฐํ์ง๋ง ์ฌ์ ํ WIP์ ๋๋ค.
์, ๋์ํฉ๋๋ค. ์ด๊ฒ์ ์ ์ฌ์ดํธ์์ ํ์คํ ์ค์ํฉ๋๋ค.
๊ฒฐ์ ๋! https://github.com/microsoft/TypeScript-website
์ ์์ ์ ๋ง์คํฐ ๋ธ๋์น์์ ๋ฒ์ด๋์ง๋ง ์ง๊ธ์ ์ด์ ์ฌ์ดํธ ์์์ ์ก์ธ์คํ ์ ์๊ณ PR์ ๋ฐ๊ณ ์์ต๋๋ค. TypeScript ๋ฆฌํฌ์งํ ๋ฆฌ์์ ์ฌ๊ธฐ๋ก ๋ฌธ์ ๋ฅผ ์ฎ๊ธฐ๊ณ ์์ผ๋ฏ๋ก ๋ชจ๋ ๋ฌธ์ ๋ฅผ ๋ ์ฝ๊ฒ ์ถ์ ํ ์ ์์ต๋๋ค.
๊ฒฐ์ ๋! ๋ถ๋ถ์ ์ผ๋ก ๋๋ ๋ง์ PR์ ๋ณํฉํ๊ณ ์ปค๋ฎค๋ํฐ์์ ์ต์ ํธ๋๋ถ์ ์ป์์ต๋๋ค. ๋ฟ๋ง ์๋๋ผ ํ์์ ํ์๋๋์ง ํ์ธํฉ๋๋ค(์น ๊ฒ์์๋ง ํด๋น).
๋๋ ์ฃผ๋ง์ ์ด๊ฒ์ ํ๊ตฌํ๊ธฐ ์์ํ๋ค(์ปดํ์ผ๋ฌ์ ์น์ฌ์ดํธ๊ฐ ์ด ๋ฌธ์์ ๋ํด ๋์ผํ ์ด๊ธฐ ๋ฐ์ดํฐ ์์ค๋ฅผ ๊ณต์ ํ๋๋ก ํ๋ ๋ฐฉ๋ฒ๊ณผ ์น์ฌ์ดํธ๊ฐ ๋ ๋ง์ ์ปจํ ์คํธ๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ๊ทธ ์์ ๋ฌด์์ ๊ตฌ์ถํ ์ ์๋์ง)
์ง๊ธ๊น์ง ๋ฐฉํฅ์ ๋ช ๊ฐ์ง ์:
๊ฒฐ์ ๋! ๋๋ ์ด๊ฒ์ด ๋ด๊ฐ ๋์ดํฐ๊ฐ ๋๊ธฐ๋ฅผ ๋ฐ๋ผ๋ ์ผ๋ฐ์ ์ธ ๋ฐฉํฅ์ ๊ธ์ ์ ์ธ ๋๋ค๋์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ ๋ Playground๊ฐ ์ง์ ์ผ๋ก ์ต๊ณ ์ ๋์ข ์ผ๋ก ๋ง๋ค๊ธฐ ์ํด ์ด๋ค ๋ชจ์๊ณผ ๋๋์ ๊ฐ์ ธ์ผ ํ๋์ง์ ๋ํ ๋ณด๋ค ์ฅ๊ธฐ์ ์ธ ๊ด์ ์ ์ ๊ณตํ๋ ๋ช ๊ฐ์ง ์์ ๋ชจํ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
๊ณ ์ , ์๋ ์ฐธ์กฐ
๋๋ ์ปดํ์ผ๋ฌ๋ฅผ ๋ฐฐ์ฐ๋ฉด์ ๋ด ์์ ์ ๊ธ์ ์ฐ๊ธฐ ์์
[๋์ดํฐ ex1, ๋์ดํฐ ex2]
์ด๊ฒ์ #29288( New handbook
์คํฌ๋กค)์ ์ผ๋ถ๋ฅผ ์ธ์ฉํ๊ธฐ ์ํด ์ ํธ๋๋ถ์์ ํด๊ฒฐํ๊ธฐ ์ํ ๊ฒ์
๋๋ค.
TypeScript์ ๋์์ด ๊ด๋ฒ์ํ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ์ฌ์ฉ์๋ฅผ ์ํ ์ผ๋ฐ ๋ฌธ์๋ฅผ ์์ฑํ๋ ๊ฒ์ ์ด๋ ต์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ์ฌ ํธ๋๋ถ์ ๊ฐ์ (๋ฐ ์ฝ์ ) ์ค ํ๋๋ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ํ ๋ฒ์ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ค๊ณ ํ๋ค๋ ๊ฒ์ ๋๋ค. TypeScript๋ฅผ ๋ฐฐ์ธ ๋ ์๋ก ๋ค๋ฅธ ๊ธฐ๋์น๋ฅผ ๊ฐ์ง ์ฌ๋ฌ ๊ฐ๋ฐ์ ๊ทธ๋ฃน์ด ์์ผ๋ฉฐ ์๋ก ๋ค๋ฅธ ๊ฐ๋ ์ ๋ ธ์ถ ์์ค์ ์กฐ์ ํด์ผ ํฉ๋๋ค. ์ด๋ฅผ ๊ฐ์ํ ๋ ์ฐ๋ฆฌ์ ๋ชฉํ๋ ํธ๋๋ถ์ ์ธ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑํ๋ ๊ฒ์ ๋๋ค.
- ๋ง์ถคํ ์๊ฐ(ํต์ฌ ํธ๋๋ถ ์ค์ )
- ํต์ฌ ํธ๋๋ถ(๋ชจ๋ ์ฌ๋์ด ์ฝ์ต๋๋ค)
- ์ฐธ์กฐ ํ์ด์ง(์ผ์ข ์ ์ฌ์ธต ๋ถ์/๋ถ๋ก)
ํจ๊ณผ์ ์ผ๋ก ๊ทธ๊ฒ์ ๋ช ๊ฐ์ง ๋ค๋ฅธ ์ถ๋ฐ์ ์ ๊ฐ์ง๊ณ ์ฃผ๋ณ ์ํ๊ณ์ ์ต์ํด์ง๋ฉด ์ธ์ด๋ฅผ ๊ฐ๋ฅด์น๋ ค๊ณ ์๋ํฉ๋๋ค.
๋๊ธ์ ์๋ ๋ชจ๋ ๋ด์ฉ์ด ์ค๋ช ๋์ด ์์ต๋๊น? ์๋, ์์์ ๋ถ๊ณผํ๋ค. ํ์ฌ ๊ฐ์ง๊ณ ์๋ ์ฌ์ดํธ๋งต์ ๋งค์ฐ ๊ด๋ฒ์ํ๋ฉฐ ๋ค์๊ณผ ๊ฐ์ ์ ํ์ ๋ฌธ์ ์ ๊ด์ฌ์ด ์์ต๋๋ค.
ํ์ฌ ์ฌ์ดํธ ๋งต ์๋ฆฌ ์ฑ ๊ณผ ๊ฐ์ด๋์ ์ฝ๊ฐ์ ์ฌ์ง๋ฅผ ๋จ๊ฒผ์ต๋๋ค. ์๋ฆฌ ์ฑ ์ ๋ ๋ง์ ์ปค๋ฎค๋ํฐ ์ง์์ ์ฅ๋ คํ ์ ์๋ ๊ฒ์ ๋๋ค.
๋๋ ํ์ฌ TypeScript ์น์ฌ์ดํธ์ ์๋ ํ์ฌ ์ฝ๋ ์ํ์ ์ ๋ ฌํ๊ณ ์ ๋ฐ์ดํธํ๊ธฐ ์์ํ์ต๋๋ค. ๊ณต์ ๋ฌธ์๋ก ๋ฆฌ๋๋ ์ ํ๋ ๊ฒ๊ณผ ๋น๊ตํ์ฌ ์ด๋ค ์ํ์ด ๋ ๋์์ง ์ฌ์ ํ ํ์ ์ค์ ๋๋ค(์: ํ๋ก์ ํธ๊ฐ ์ด์ ๊ธฐ๋ณธ์ ์ผ๋ก TypeScript๋ฅผ ์ง์ํ๊ณ ์์ฒด ๋ฌธ์๊ฐ ์๋ ๊ฒฝ์ฐ).
์์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฌ์ดํธ์ ์๋ฆฌ ์ฑ ๊ณผ ์ค์ ๊ฐ์ด๋ ์น์ ์ ์ด๊ฒ์ ๋ค๋ฃจ๊ธฐ์ ์ถฉ๋ถํด์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์, ๊ธฐ๋ณธ ์ ์ฅ์์์ ์์ ํ ์ ๊ฑฐํ ์ ์๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ํ์ง๋ง ์ ์ฌ์ดํธ์์๋ ์ธ๊ธ๋์ง ์์ต๋๋ค.
์ด๊ฒ์ ํ์ฌ ์ ํธ๋๋ถ ์ฌ์ดํธ ์ ์์ง๋ง ์ ์ฌ์ดํธ์๋ ์ด์ํด์ผ ํฉ๋๋ค. ๋ํ ๊ฐ์กฐ ํ์ ๋ฐ ์ธ๋ผ์ธ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์ ๊ณตํ๋๋ฐ, ์ด๋ ์ ๊ฐ ๋งค์ฐ ๊ธฐ์๊ฒ ์๊ฐํฉ๋๋ค.
์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋์ง ํ์คํ์ง ์์ต๋๋ค. ๋ถ๋ถ์ ์ผ๋ก TypeScript์๋ ๋ง์ ์ค๋ฅ ์ฝ๋๊ฐ ์์ผ๋ฉฐ ๊ฝค ์ ๊ธฐ์ ์ผ๋ก ๋ณ๊ฒฝ๋๊ณ ์์ต๋๋ค. ์์ ํ ์๋ํ๋ ์ฌ์ดํธ์ ๋ฌธ์๊ฐ ์์ผ๋ฉด ๋ค์ ๋์์ฌ ๊ฐ์น๊ฐ ์์ง๋ง ์ง๊ธ์ ๋ฐฑ ๋ฒ๋์ ์์ต๋๋ค.
์ง๊ธ๊น์ง์ ์ ํธ๋๋ถ์ ์ด ๋ถ๋ถ์ ์ ์ํํ๊ณ ์์ต๋๋ค. ๋๋จธ์ง ๋ฌธ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ด๊ฐ ๋ณด๋ ๋ชจ๋ ๊ฒ์ ๊ทธ๋ฐ ์์ผ๋ก ๋ณ๊ฒฝํ๋ ค๊ณ ํฉ๋๋ค.
์ ์ฌ์ดํธ์ Microsoft ๋์์ธ ์์คํ (์ ์ฒด)์ ์ฌ์ฉํ๋ ค๊ณ ํฉ๋๋ค. ์ฆ, ๋ชจ๋ฐ์ผ ์ง์(์ ๊ทผ์ฑ ํฌํจ)์ด "๋๋ถ๋ถ ๋ฌด๋ฃ๋ก" ์ ๊ณต๋์ด์ผ ํฉ๋๋ค.
๋์ดํฐ๋งํผ ๋ณต์กํ๊ณ ์กฐ๊ธ ๋ ๊น๋ค๋กญ๊ธฐ ๋๋ฌธ์ ํด๋ํฐ ํฌ๊ธฐ์ ๋ชจ๋ฐ์ผ์๋ ํ์/ํ์ ์ฌ๊ณ ๋ฐฉ์์ด ์ ํฉํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋์ ์ ๋ ์ฝ๊ธฐ ์ ์ฉ ๊ฒฝํ์ ์กฐ๊ธ ๋ ๊ฐ๊น์ด ๋ชจํ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
๋๋ ์ด์ ๋ํด ๊ฐ๋ฐฉ์ ์ด์ง๋ง typescript CLI๋ ์ค์ ๋ก ํ๋์ ๋ช ๋ น, ์ปดํ์ผ์ ๋๋ค(์ด๊ฒ์ด ํ์ ๋ช ๋ น์ ๋ํ ๋์์ด ํ์ํ์ง ์์ ์ด์ ์ ๋๋ค(--init์ด ์ฝ๊ฐ ๊นจ์ง)).
์, ํ์คํ ํ์ดํ๋ ์น์ฌ์ดํธ๋ฅผ ํ์ดํ์คํฌ๋ฆฝํธ ์น์ฌ์ดํธ๋ก ๋ณํฉํ๊ณ ํด๋น ๋ฌธ์๋ฅผ ํตํฉํ ๊ณํ์ ๋๋ค. ๊ทธ๋ค ์ค _๋ชจ๋_๊ฐ ์ฌ์ดํธ์ ์ด ๊ฒ์ธ์ง ์ฌ๋ถ๋ ์ฌ์ ํ ๋ ผ์์ ์ฌ์ง๊ฐ ์์ต๋๋ค. ๋์ ์์ค์ ๊ฐ์๊ฐ ์ฌ์ดํธ์ ์์ ์ ์๋ ๋์ ๋ช ํํ๊ฒ ํ์ํ๋ ์ ์ฅ์์ ๊ธฐ์ฌํ๋ ์ค์ ๊ตฌํ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ ์งํ๋ ๋ฐ๋ ๋ช ๊ฐ์ง ์ข์ ์ด์ ๊ฐ ์์ต๋๋ค.
๊น๋ค๋ก์ด ๋ฌธ์ ๋ก ๋ธ๋ก๊ทธ/๋ฆด๋ฆฌ์ค ๋ ธํธ์ ๋ํ ๋ต๋ณ์ด ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ค๋ฅธ ๋ชจ๋ ์ฌ๋๋ค๊ณผ ํจ๊ป 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 ๋ ์ด๋ธ์ด ์๋ฏธํ๋ ๋ฐ๋ฅผ ์๊ณ ์ถ์ต๋๋ค. ๊ทธ๋ค ์ค ์ผ๋ถ๋ ์๋ช ํ์ง๋ง ๋ค๋ฅธ ๊ฒ๋ค์ ๊ทธ๋ ์ง ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, "์ ์ ํ์"๋ ๋์๊ฒ ๋ช ํํ์ง ์์ต๋๋ค. ๋ชจ๋ ๋ ์ด๋ธ์ ์ด๋ฏธ ์ผ๋ถ ๋ ์ด๋ธ๊ณผ ๊ฐ์ด ๋ ๊ธด ์ค๋ช ์ด ์์ผ๋ฉด ๋์์ด ๋ฉ๋๋ค.
์ฐ๋ฆฌ ํ์ 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 ๋ฌธ์ ์ ์ถ๊ฐ).
'๋ด๋ณด๋ด๊ธฐ' ์๋์ ๋ชจ๋ ๋งํฌ๊ฐ ํ์๋์ง๋ง '๊ณต์ '๋ ํ์๋์ง ์์ต๋๋ค.
์๋ก์ด ์ฌ์ดํธ๋ ์ ๋ง ์ข์ ๋ณด์ ๋๋ค! ๊ทธ๋ฌ๋ ๋๋ ์ด ์์ฒญ (์ปดํ์ผ๋ฌ ์ต์ ์ ๋ํ ์ต์ปค ๋งํฌ)์ด ๐์์ ์ด๋ฃจ์ด์ง์ง ์์๋ค๋ ๊ฒ์ ์์์ฐจ๋ ธ์ต๋๋ค.
์ ๋ง ์ฝ๊ฒ ์์ฉํ ์ ์๋ ์์ฒญ์ด ๋ ๊ฒ ๊ฐ๊ณ ์ ๊ท ์ด๋ฏผ์๋ค์๊ฒ ๋ง์ ๋์์ด ๋ ๊ฒ ๊ฐ์ต๋๋ค. ํฅํ ์ ๋ฐ์ดํธ์์ ๋ณผ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค!
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ฌธ์์ ๋ํ ๊ฒ์์ด ์์ต๋๋ค
๋๋ ์ข ์ข ์ฃผ์ ๋ฌธ์๋ฅผ ์ฌ์ค์ ์์ค๋ก ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค, ์๋ฅผ ๋ค์ด React ๋ฌธ์์์์ ๊ฐ์ด DocSearch๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค typescript๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌด์ธ๊ฐ๋ฅผ ์ํํ๋ ๋ฐฉ๋ฒ์ ์ธํฐ๋ท ๊ฒ์์ ์์กดํด์ผ ํฉ๋๋ค.
ํ๊ทธ:
search
,exploration