- ํ์ ์คํฌ๋ฆฝํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ปดํ์ผ๊ณผ ์คํ์ด ์ด๋ค์ง๋๋ค.
ํ์ ์คํฌ๋ฆฝํธ์ ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ด๊ณ ์ดํดํ๊ธฐ

- ์๋ฐ์คํฌ๋ฆฝํธ๋ ํ์ ์คํฌ๋ฆฝํธ์ ๋ถ๋ถ ์งํฉ์ ๋๋ค.
- js ๋๋ jsx ํ์ผ์ ts, tsx๋ก ๋ฐ๊พผ๋ค๊ณ ๋ฌ๋ผ์ง๋ ์ ์ ์์ต๋๋ค. ์ด๋ ๋ง์ด๊ทธ๋ ์ด์ ์ ์์ฒญ๋ ์ด์ ์ด ๋ฉ๋๋ค.
- ํ์ ์คํฌ๋ฆฝํธ์ด์ง๋ง ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์๋ ๊ฒฝ์ฐ๊ฐ ์กด์ฌํฉ๋๋ค. (ํ์ ์ ๋ช ์ํ๋ ์ถ๊ฐ์ ์ธ ๋ฌธ๋ฒ๋ค)

- ํ์ ์คํฌ๋ฆฝํธ๋ ํ์ ์ฒดํฌ๋ฅผ ํตํด ๋ฌธ์ ์ ์ ์ฐพ์์ค๋๋ค. (ํ์ ์ถ๋ก ์ ์ด์ฉํด์)
- ํ์ ์ ๋ฐ๋ฅธ ๋ฉ์๋
- ๊ฐ์ฒด์ ํค๊ฐ (์ด๋์ชฝ์ด ์คํ์ธ์ง๋ ํ์ ํ์ง ๋ชปํฉ๋๋ค.)
- ๋ช ์์ ์ธ ํ์ ์ ์ธ์ผ๋ก (interface or type) ์ ์ฌ์ ๋ฌธ์ ๋ฅผ ์ฐพ์ ์ ์๋ค.

- ํ์ ์ฒด์ปค๋ฅผ ํต๊ณผํ ํ๋ก๊ทธ๋จ๋ ์ค๋ฅ๊ฐ ์๋ค๊ณ ํ๋จ๋๋ ๊ฒฝ์ฐ ํ์ ์คํฌ๋ฆฝํธ์์ ์ด๋ฅผ ํ์ํจ
- ํ์ ์คํฌ๋ฆฝํธ๋ ํ์ ์ ์ด์ ์ ๋ง์ถ๊ณ ์ ํ์ฑ์ Reason, Elm ๊ฐ์ ์ธ์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฌ๋ค.
ํ์ ์คํฌ๋ฆฝํธ ์ค์ ์ดํดํ๊ธฐ
์ค์ ์ ์ํด์๋โฆ
- ์ปค๋งจ๋ ๋ผ์ธ
tsc --noImplicitAny program.ts
- tsconfig.json (tsc โinit ์คํ)
{ "CompilerOptions": { "noImplicitAny": true } }
noImplicitAny
- ์์์ any ํ์ ์ผ๋ก ๊ฐ์ฃผ๋๋ ๊ฒ์ ๋ง์ต๋๋ค.
strickNullChecks
-null
orundefined
๊ฐ ํ์ฉ๋๋ ๊ฒ์ ํ์ธํด์ฃผ๋ ์ค์ - ๋ช
์์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก๋ ์ ๋์ธ์ ํ์ฉํด
number | null
ํ์ฉํ ์ ์์ - ํ์ฉํ์ง ์๋๋ค๋ฉด?
- strickNullChecks ์ฌ์ฉํ๋ ค๋ฉด noImplicitAny๋ฅผ ๋จผ์ ์ค์ ํด์ผํฉ๋๋ค.
- ์ด ๋๊ฐ๋ฅผ ๋ชจ๋ ์ฒดํฌํ๊ณ ์ถ๋ค๋ฉด strict๋ฅผ ์ค์ ํ์
null check, or ๋จ์ธ๋ฌธ(assertion) ์ถ๊ฐ

์ฝ๋ ์์ฑ๊ณผ ํ์ ์ด ๊ด๊ณ์์์ ์ดํดํ๊ธฐ
- ํ์ ์คํฌ๋ฆฝํธ ์ปดํ์ผ๋ฌ์ ์ญํ
- ์ต์ ํ์ ์คํฌ๋ฆฝํธ/์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋ธ๋ผ์ฐ์ ์์ ๋์ํ ์ ์๋๋ก ๊ตฌ๋ฒ์ ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ํธ๋์คํ์ผ
- ์ฝ๋์ ํ์ ์ค๋ฅ๋ฅผ ์ฒดํฌ
- ํ์ ์ค๋ฅ๊ฐ ์๋ ์ฝ๋๋ ์ปดํ์ผ์ด ๊ฐ๋ฅ
- ํ์ ์ฒดํฌ์ ๋ ๋ฆฝ์ด๊ธฐ์ ์ปดํ์ผ์ด ๊ฐ๋ฅ
- C๋ ์๋ฐ๋ ์ปดํ์ผ๊ณผ ํ์ ์ฒดํฌ๊ฐ ๋์์ ์ด๋ค์ง
- ์ค๋ฅ๊ฐ ์์ ๋ ์ปดํ์ผํ์ง ์์ผ๋ ค๋ฉด tsconfig.json์ noEmitOnError๋ฅผ ์ค์ ํ๊ฑฐ๋ ๋น๋ ๋๊ตฌ์ ๋์ผํ๊ฒ ์ ์ฉํ๋ฉด ๋๋ค.
- ๋ฐํ์์๋ ํ์ ์ฒดํฌ๊ฐ ๋ถ๊ฐ๋ฅ
- ํด๊ฒฐ๋ฒ ์์ฑ ์กด์ฌ๋ฅผ ์ฒดํฌ
- ํ๊ทธ ๊ธฐ๋ฒ: ๋ฐํ์์์ ์ ๊ทผ ๊ฐ๋ฅํ ํ์ ์ ๋ณด๋ฅผ ๋ช ์์ ์ผ๋ก ์ ์ฅํ๋ ๋ฐฉ๋ฒ
- ํ์ (๋ฐํ์ ์ ๊ทผ ๋ถ๊ฐ)๊ณผ ๊ฐ(๋ฐํ์ ์ ๊ทผ ๊ฐ๋ฅ)์ ๋๋ค ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ํ์ ์ ํด๋์ค๋ก ๋ง๋ค๋ฉด ๋๋ค.
- ์ธํฐํ์ด์ค๋ ํ์ ์ผ๋ก๋ง ์ฌ์ฉ ๊ฐ๋ฅํ์ง๋ง ํด๋์ค๋ก ์ ์ธํ๋ฉด ํ์ ๊ณผ ๊ฐ์ผ๋ก ๋ชจ๋ ์ฌ์ฉํ ์ ์๋ค.
- ํ์ ์ฐ์ฐ์ ๋ฐํ์์ ์ํฅ์ ์ฃผ์ง ์๋๋ค.
- ํ์
๋จ์ธ๋ฌธ
as number
์ ํ์ ์ฐ์ฐ์ผ๋ก ๋ฐํ์ ๋์์๋ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค. - ํ์ ์ ์ฒดํฌํ๊ณ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ฐ์ฐํ์ฌ ๋ณํ์ ์ํํด์ผ ๊ฐ์ ์ ์ ํ ์ ์์

- ๋ฐํ์ ํ์ ์ ์ ์ธ๋ ํ์ ๊ณผ ๋ค๋ฅผ ์ ์๋ค.
- ๋คํธ์ํฌ ํธ์ถ์ ํตํด ๋ฐ์ ๊ฐ์ ํจ์์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ฐํ์์์๋ ํ์ ์ด ๋ง์ง ์์ ์ ์์
- ํ์ ์คํฌ๋ฆฝํธ ํ์ ์ผ๋ก๋ ํจ์๋ฅผ ์ค๋ฒ๋ก๋ํ ์ ์๋ค.
- C++ ๊ฐ์ ์ธ์ด๋ ๋งค๊ฐ๋ณ์๋ง ๋ค๋ฅธ ์ฌ๋ฌ ๋ฒ์ ์ ํจ์๋ฅผ ํ์ฉ, ํ์ ์คํฌ๋ฆฝํธ์์๋ ํจ์ ์ค๋ฒ๋ก๋ฉ์ ๋ถ๊ฐ
- ํ์ ์์ค์ ์ค๋ฒ๋ก๋ฉ๋ง ์ง์, ์ฌ๋ฌ๊ฐ์ ํ์ ์ ์ธ๋ฌธ์ ์์ฑํ ์ ์์ผ๋ ๊ตฌํ์ฒด๋ ํ๋ ๋ฟ
- ํ์ ์คํฌ๋ฆฝํธ ํ์ ์ ๋ฐํ์ ์ฑ๋ฅ์ ์ํฅ์ ์ฃผ์ง ์์
- ํ์ ๊ณผ ํ์ ์ฐ์ฐ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ณํ ์์ ์์ ์ ๊ฑฐ๋๊ธฐ ๋๋ฌธ์ ์ํฅ์ด ์๋ค.
- ๋ฐํ์์๋ ์ค๋ฒํค๋๊ฐ ์์ผ๋ ์ปดํ์ผ๋ฌ ๋น๋ํ์์๋ ์ค๋ฒํค๋๊ฐ ์์, ์ค๋ฒํค๋๊ฐ ํฌ๋ค๋ฉด transpile only๋ฅผ ์ฒดํฌ
- ํธํ์ฑ๊ณผ ์ฑ๋ฅ ์ค๋ฒํค๋๋ฅผ ์ ํํ๋ ๊ณผ์ ์์๋ ํ์ ๊ณผ๋ ๋ฌด๊ดํจ
๊ตฌ์กฐ์ ํ์ดํ ์ต์ํด์ง๊ธฐ
- ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ ํ์ดํ ๊ธฐ๋ฐ, ํจ์์ ๋งค๊ฐ๋ณ์ ๊ฐ์ด ๋ชจ๋ ์ ๋๋ก ์ฃผ์ด์ง๋ค๋ฉด ๊ทธ ๊ฐ์ด ์ด๋ป๊ฒ ๋ง๋ค์ด์ก๋์ง ์ ๊ฒฝ์ฐ์ง ์๊ณ ์ฌ์ฉ
- ํ์ ์คํฌ๋ฆฝํธ๋ ์ด๋ฅผ ๋ชจ๋ธ๋งํ๊ธฐ ์ํด ๊ตฌ์กฐ์ ํ์ดํ์ ์ง์
- ์ด๋ค ํ์ ์ ์ธ๊ณผ ๊ตฌ์กฐ๊ฐ ๊ฐ๋ค๋ฉด ๊ด๊ณ๋ฅผ ์ ์ธํ์ง ์์๋ ํจ์๊ฐ ๋์ํจ ์ด๋ฅผ ๊ตฌ์กฐ์ ํ์ดํ์ด๋ผ๊ณ ํจ
- ์ด๋ฌํ ๊ตฌ์กฐ์ ํ์ดํ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ธฐ๋ํจ
- ์ด๋ค ํจ์ ์์์ ์ ์ธ๋๋ ๋ณ์, ์ถ๊ฐ์ ์ผ๋ก ์ ๊ณต๋๋ ์ ๋ณด๋ก ์๋ชป๋ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐ์ ์ ์์
- ํด๋์ค์์๋ ๊ตฌ์กฐ์ ํ์ดํ์ ๋ฐ๋ฆ ์ธ์คํด์ค๊ฐ ์์๊ณผ ๋ค๋ฅผ ์ ์๋ค.
- ๊ทธ๋ผ์๋ ํ ์คํธ๋ฅผ ์์ฑํ ๋์๋ ๊ตฌ์กฐ์ ํ์ดํ์ด ์ ๋ฆฌํ๋ค
any ํ์ ์ง์ํ๊ธฐ
- ํ์ค์ any๋ฅผ ํตํด ์ ์ง์ ์ด๊ณ ์ ํ์ ์ด๋ค.
- any ํ์ ์๋ ํ์ ์์ ์ฑ์ด ์๋ค.
- any๋ ํจ์ ์๊ทธ๋์ฒ๋ฅผ ๋ฌด์ํ๋ค.
- any ํ์ ์๋ ์ธ์ด ์๋น์ค๊ฐ ์ ์ฉ๋์ง ์๋๋ค.
- ์ฌ๋ฒ์ ํ์ ์ด ์๋ค๋ฉด ์๋์์ฑ๊ณผ ์ ์ ํ ๋์๋ง์ ์ ๊ณตํ๋ค.
- ํธ์ง๊ธฐ์ Rename Symbol์ ํด๋ฆญํด์ ์ธํฐํ์ด์ค์ ๊ด๋ จ๋ ๋ด์ฉ์ ํ๋ฒ์ ์์ ํ ์ ์๋ค.
- any ํ์ ์ ์ฝ๋ ๋ฆฌํฉํฐ๋ง ๋ ๋ฒ๊ทธ๋ฅผ ๊ฐ์ถฅ๋๋ค.
- any๋ฅผ ์ฌ์ฉํ๋ฉด ์ก์ ์ค๋ฅ๋ ๋์น๋ค~
- any๋ ํ์ ์ค๊ณ๋ฅผ ๊ฐ์ถ๋ค
- ์ค๊ณ๊ฐ ๋ณด์ด๋๋ก ๊ตฌ์ฒด์ ์ผ๋ก ์์ฑํ๋ ๊ฒ์ด ํ์ํ๋ค
- any๋ ํ์ ์์คํ ์ ์ ๋ขฐ๋๋ฅผ ๋จ์ด๋จ๋ฆฐ๋ค.