โค
TypeScript?
TypeScript์ ๋ํด์ ์ฒ์ ๊ด์ฌ์ ๊ฐ์ง๊ฒ ๋ ๊ฒ์ React๋ฅผ ๊ณต๋ถํ๋ฉฐ ๊ฐ๋ฐ์ ํ๋ค ์ค๊ฐ ์ค๊ฐ Type
์ ๋ํด ์ ๋๋ก ์ฒดํฌ๋ฅผ ์ํ๊ณ ๊ทธ๋ฅ ์ฌ์ฉ์ ํ๋ค ๋ฐํ์์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค๋ ๊ฒ์ ๋์ผ๋ก ๋ณด๊ณ ์์ ์ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋๋ฐ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ์์ฒ ์ฐจ๋จ ํ ์ ์๋ JavaScript
์ SuperSet
์ธ์ด์ธ TypeScript
๊ฐ ์๋ค๋ ๊ฒ์ ์๊ฒ ๋๊ณ ๊ด์ฌ์ ๊ฐ์ง๊ฒ ๋์๋ค.
TypeScript
๊ฐ ์์์ ์ค๋ช
ํ ๋ฌธ์ ๋ฅผ ์์ฒ ์ฐจ๋จ ํ ์ ์๋ค๋ ์ด์ ๋ JS์ ๋ฌ๋ฆฌ ์ปดํ์ผ ๊ณผ์ ์์ TypeChecker
๋ฅผ ํตํด ์๋ฅผ ๋ค์ด ์ซ์์ ๋ฌธ์๋ฅผ ๊ณฑํ๊ณ ์๋์ง ์ ๊ฐ์ ํ์๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋ฏธ๋ฆฌ ๊ฒฝ๊ณ ๋ฅผ ํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ์ค์๋ฅผ ์ค์ด๊ณ ์ํ๋ ํํ๋ก ์ ์์ ์ผ๋ก ๋์ค๊ฒ ๋ ์ ์๋ค.
์ฒ์ TypeScript
์ ๋ํด ์์์ ๋ ์ปดํ์ผ์ ํด ์ค๋ค๊ณ ?? JavaScript
๋ ์ธํฐํ๋ฆฌํฐ ์ธ์ด์ธ๋ฐ? ํ๋ฉด์ ์๋ฌธ์ ์ด ์๊ฒผ๋ค.
์ด๋ TypeScript
๋ ์์์ ๋งํ ๊ฒ๊ณผ ๊ฐ์ด JavaScript
์ SuperSet์ผ๋ก TypeScript
๋ ๊ฒฐ๊ณผ๋ฌผ์ JavaScript
๋ก ๋ง๋ค์ด ์ค๋ค.
๊ทธ ๊ณผ์ ์์ ํ์ ์ ๋ํด ์ฒดํฌ๋ฅผ ํด์ฃผ๊ธฐ ๋๋ฌธ์ ๋ฐํ์์ด ์๋ ์ปดํ์ผ ์์ ์์ ํ์ ์ ๋ํด ์๋ชป๋ ๋ถ๋ถ์ ์๊ฒ ๋๋ ๊ฒ์ด๋ค.
TS:
1: ํ์
์คํฌ๋ฆฝํธ ์์ค -> ํ์
์คํฌ๋ฆฝํธ AST
2: ํ์
๊ฒ์ฌ๊ธฐ๊ฐ AST๋ฅผ ํ์ธ
3: ํ์
์คํฌ๋ฆฝํธ AST -> ์๋ฐ์คํฌ๋ฆฝํธ ์์ค
JS:
4: ์๋ฐ์คํฌ๋ฆฝํธ ์์ค -> ์๋ฐ์คํฌ๋ฆฝํธ AST
5: AST -> ๋ฐ์ดํธ์ฝ๋
6: ๋ฐํ์์ด ๋ฐ์ดํธ์ฝ๋๋ฅผ ํ๊ฐ
์์ ๊ฐ์ ๋จ๊ณ๋ฅผ ๊ฑฐ์น๋ฉด์ TypeScript๊ฐ JavaScript ์์ค๋ก ์์ฑํ์ฌ ๋ธ๋ผ์ฐ์ ๊ธฐํ ์์ง์ ์ํด์ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์คํ์ด ๋๋ค.
๊ทธ๋ฆฌ๊ณ Node.js
์์ TypeScript
๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ typescript tslint @types/node
๋ฑ์ ์ถ๊ฐ์ ์ธ ๋ชจ๋์ด ์๊ตฌ๊ฐ ๋๋๋ฐ deno
๋ผ๋ ์๋ก์ด ์์ง์ ์ฌ์ฉํด์ ์ถ๊ฐ์ ์ธ ๋ชจ๋์ด ์์ด ์๋์ด ๊ฐ๋ฅํ๊ฒ ๋๋ค.
Deno?
Deno is a simple, modern and secure runtime for JavaScript and TypeScript that uses V8 and is built in Rust.
Deno
์ ๊ณต์ ์ฌ์ดํธ์ ๋ค์ด๊ฐ๊ฒ ๋๋ฉด ์์ ๊ฐ์ด ์ค๋ช
์ ํ๊ณ ์๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
Deno
๋ Node.js
์ ๊ฐ๋ฐ์๊ฐ ๊ธฐ์กด Node.JS
๋ฅผ ๋ง๋ค์๋ ์ํฉ๊ณผ ์ง๊ธ์ JavaScript์ ์ํ๊ณ๊ฐ ๋ณํ๋จ์ผ๋ก์จ ๊ทผ๋ณธ์ ์ผ๋ก ๊ฐ์ง๊ณ ์์๋ ๋จ์ ๋ค์ ๊ฐ์ ํ ํ๋ก์ ํธ ์ด๋ค.
๊ธฐ์กด Node.js
์์ ์ฐจ์ด์ ์ ์๋์ ๋ฆฌ์คํธ๋ก ์ ๋ฆฌํด๋ณด์๋ค.
Node.js | Deno | |
---|---|---|
Engine | V8 | V8 |
Language | C++, javascript | rust, typescript |
Package manager | NPM | URLs or file paths |
Modules import | CommonJs | ES Modules |
Security | full access | explicit permissions |
TypeScript Support | not built in | built in |
async actions return value | return undefined or promise | return promise |
Node.js
์ Deno
๋ ์์ ๊ฐ์ ์ฐจ์ด๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ํ์ง๋ง ์์ง ๊ฐ๋ฐ์ด Node.js
์ ๋ฌ๋ฆฌ ์ด๊ธฐ์ธ ์ ์ ๊ณ ๋ คํ์ฌ์ ์ฌ์ฉ์ ๊ณ ๋ คํด์ผ ํ๋ค.
๊ธฐ์กด Node.js
๋ TypeScript๋ฅผ ์ฐ๊ธฐ ์ํด ์ถ๊ฐ์ ์ธ ๋ชจ๋์ ์ฌ์ฉ ํด์ผ ํ๊ณ ๋ณต์กํ ์ค์ ์ด ํ์ํ์ง๋ง Deno๋ ์์ฒด์ ์ผ๋ก TypeScript๋ฅผ ์ง์ํ๊ธฐ ๋๋ฌธ์ ์ด๋ฒ ๊ธฐํ์ ๊ฐ์ด ๊ณต๋ถํ๊ณ ์ ์ด๋ ๊ฒ ์ ๋ฆฌ ๊ธ์ ์์ฑํ๊ฒ ๋์๋ค.
Hello TypeScript! with Deno๐ฆ
์ด์ ํ๋ฒ Deno๋ฅผ ์ค์นํ์ฌ์ Hello TypeScript! - with ๐ฆ
๋ฌธ๊ตฌ๋ฅผ ์ถ๋ ฅ ํด๋ณธ๋ค!
Installation
Deno works on macOS, Linux, and Windows. Deno is a single binary executable. It has no external dependencies.
Using Shell (macOS and Linux):
curl -fsSL https://deno.land/x/install/install.sh | sh
Using PowerShell (Windows):
iwr https://deno.land/x/install/install.ps1 -useb | iex
Using Scoop (Windows):
scoop install deno
Using Chocolatey (Windows):
choco install deno
Using Homebrew (macOS):
brew install deno
Using Cargo (Windows, macOS, Linux):
cargo install deno
Deno์์ ์ ๊ณตํ๋ ์ค์น ๋ฐฉ๋ฒ์ ํตํด ์ค์น๋ฅผ ์งํ ํ๋ค.
์ด์ hello.ts
๋ผ๋ ๊ฐ๋จํ ํ์ผ์ ๋ง๋ค๊ณ ์๋์ ๊ฐ์ ๋ด์ฉ์ผ๋ก ์์ฑ์ ํด๋ณธ๋ค.
console.log("Hello TypeScript! - with ๐ฆ")
๊ทธ๋ฆฌ๊ณ deno run hello.ts
๋ช
๋ น์ด๋ฅผ ํตํด ๊ฒฐ๊ณผ๋ฌผ์ ํ์ธ ํด๋ณธ๋ค!
์ด์ TypeScript์ ์ฅ์ ์ธ TypeChecker
๊ฐ ๋์ํ๋ ์ง ํ์ธํ๋ค.
const num = 10
const word = "test"
console.log(num * word)
์์ ๊ฐ์ด ์์ฑ๋ ํ์ผ์ ๋ณด๊ฒ ๋๋ฉด ์๋์ ๊ฐ์ ๊ฒฝ๊ณ ๊ฐ ๋ฐ๋ก ์ถ๋ ฅ ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
์ด๋ฒ์๋ annotation
๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ์์ Type๋ฅผ ์ง์ ํ์์ ๋ ์ด๋ค ์์ผ๋ก ์๋ํ๋์ง ํ์ธ ํ๋ค.
const num: number = 10
const word: number = "test"
console.log(num * word)
์์ ๊ฐ์ด ํ์ ์ ๋ํ์ฌ ์ ์๋ฅผ ํตํด ๊ฐ๋ฐ์๊ฐ ํ ์ ์๋ ํ์ ์ ๋ํ ์ค์๊ฐ ์ฌ๋ผ์ง๊ฒ ๋๋ค.
ํ๋ฒ ๊ฐ๋จํ๊ฒ TypeScript์ Deno์ ๋ํด์ ๊ธ์ ํด๋ณด์๋๋ฐ Deno์ ์ฅ์ ๊ณผ ์ TypeScript๋ฅผ ์ฌ์ฉํด์ผ ํ๋์ง์ ๋ํด ์ข ๋ ์์๊ฐ๊ฒ ๋ ๊ฒ ๊ฐ๋ค.