#5 TypeScript Blockchain

#5.0 Introduction

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๋ฐ‘๋ฐ”๋‹ฅ๋ถ€ํ„ฐ ์„ค์ •ํ•˜๊ธฐ ! - not TS Playground

#5.1 Targets

make directory >

npm init -y // package.json ์ƒ์„ฑ
npm install -D typescript // package.json ์— ts ์ถ”๊ฐ€
devDependencies ์ƒ์„ฑ๋จ

make src > make index.ts

make tsconfig.json

tsconfig.json

์ด ํŒŒ์ผ์ด ์žˆ์œผ๋ฉด vs code๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘์—…ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์ฆ‰์‹œ ์•Œ๊ฒŒ๋˜๊ณ , ์ž๋™์™„์„ฑ๊ธฐ๋Šฅ ๋“ฑ ์ œ๊ณตํ•ด์คŒ

ํ•จ์ˆ˜๋ฅผ ํ•˜๋‚˜ ์ถ”๊ฐ€ํ•œ ts ํŒŒ์ผ๋กœ ํ™•์ธํ•ด๋ณด์ž.

index.ts

index.ts ํŒŒ์ผ์—๋Š” hello ๋ผ๋Š” ํ•จ์ˆ˜๊ฐ€ ํ•˜๋‚˜ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค. ์ด ts ํŒŒ์ผ์„ ์ปดํŒŒ์ผํ•ด๋ณด์ž

tsconfig.json

tsconfig.json ํŒŒ์ผ์— ์œ„์™€ ๊ฐ™์ด ์„ค์ •ํ•˜๊ณ 

package.json

package.json ์˜ script์— build : tsc๋ฅผ ์ถ”๊ฐ€ํ•œ๋’ค npm run build ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด

npm run build

์ปดํŒŒ์ผํ•œ js ํŒŒ์ผ์ด ์„ค์ •ํ•œ ํด๋”์— ์†ํ•ด์žˆ๋‹ค.

์œ„ ํŒŒ์ผ์˜ ํŠน์ง•์„ ๋ณด์ž. ๋จผ์ €, ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๊ฐ€ ์ผ๋ฐ˜์ ์ธ ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์œผ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ๊ณ , const ๊ฐ€ var ๋กœ ์ˆ˜์ •๋˜์—ˆ๋‹ค. ์–ด๋””์„œ๋‚˜ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋‚ฎ์€ ๋ฒ„์ „์˜ js ์ฝ”๋“œ๋กœ ๋ณ€๊ฒฝํ•œ ๊ฒƒ์ด๋‹ค !

์ด๋ฅผ tsconfig ์—์„œ ์›ํ•˜๋Š” ๋ฒ„์ „์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

tsconfig.json

์ปดํŒŒ์ผ๋Ÿฌ ์˜ต์…˜์—์„œ ํƒ€๊ฒŸ์„ ES6 ๋กœ ์„ค์ •ํ•˜๊ณ  build !

index.js

์•„๊นŒ์™€ ๋‹ฌ๋ฆฌ ES6์—์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ const, ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋กœ ์ปดํŒŒ์ผ ๋œ๋‹ค.

์ด์ฒ˜๋Ÿผ tsconfig.json ์—์„œ ts์™€ ๊ด€๋ จ๋œ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

#5.2 Lib Configuration

lib - ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—๊ฒŒ ์–ด๋–ค API๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์–ด๋–ค ํ™˜๊ฒฝ์—์„œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ• ์ง€ ์ง€์ •ํ•˜๋Š” ์—ญํ• . JS๊ฐ€ ์–ด๋””์„œ์‹คํ–‰๋ ์ง€๋ฅผ ์•Œ๋ ค์คŒ. ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด default๋กœ ["ES5", "ES6", "ES7", "ES2015.Promise"] ๊ฐ€ ์„ค์ •๋จ

ex) "lib" : ["ES6"] ์œผ๋กœ ์„ค์ •์‹œ

๋ธŒ๋ผ์šฐ์ €์—์„œ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๋‚ด์šฉ์ด ์—†๊ธฐ์— TS์—์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

"lib" : ["ES6"]
"lib" : ["ES6", "DOM"]

lib์— DOM์„ ์ถ”๊ฐ€ํ•˜๋ฉด ์—๋Ÿฌ๋Š”์‚ฌ๋ผ์ง„๋‹ค.

์ด์ฒ˜๋Ÿผ lib์€ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—๊ฒŒ ์–ด๋–ค API๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๊ณ , ์–ด๋–ค ํ™˜๊ฒฝ์—์„œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ• ์ง€ ์•Œ๋ ค์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ์ด ์„ค์ •์œผ๋กœ ์ •๋งx100 ํŽธ๋ฆฌํ•œ ์ž๋™์™„์„ฑ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

#5.3 Declaration Files

์ •์˜ ํŒŒ์ผ - JS ์ฝ”๋“œ์˜ ๋ชจ์–‘์„ TS์— ์„ค๋ช…ํ•ด์ฃผ๋Š” ํŒŒ์ผ.

ex) JS๋กœ ๋งŒ๋“  ํ•จ์ˆ˜ ๋ชจ๋“ˆ์„ TS ์—์„œ ์‚ฌ์šฉํ•˜๋ คํ• ๋•Œ

JS๋กœ ์ž‘์„ฑํ•œ ํ•จ์ˆ˜ ๋ชจ๋“ˆ

JS์—์„œ ์ž‘์„ฑํ•œ ํ•จ์ˆ˜ ๋ชจ๋“ˆ์„ TS์— ๊ฐ€์ ธ์™€ ์‚ฌ์šฉํ•˜๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

TS์—์„œ ๋ฐœ์ƒํ•œ ์—๋Ÿฌ

ํ˜•์‹ ์„ ์–ธ์„ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ธ๋ฐ ์ด๋Š” TS์—๊ฒŒ myPackage ๋‚ด ์š”์†Œ๋“ค์˜ ํƒ€์ž…์„ ์•Œ๋ ค์ฃผ์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๋ฅผ ์œ„ํ•ด myPackage.t.ds ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํƒ€์ž…์„ ์„ ์–ธํ•ด๋ณด์ž.

myPackage์˜ ํƒ€์ž… ์„ ์–ธ

๊ทธ๋Ÿฌ๋ฉด TS์—์„œ ํƒ€์ž… ํ™•์ธ์ด ๊ฐ€๋Šฅํ•ด์ง€๊ณ  ์—๋Ÿฌ๊ฐ€ ์‚ฌ๋ผ์ง„๋‹ค.

myPagkage ๋ชจ๋“ˆ์„ ํ™•์ธ ๊ฐ€๋Šฅํ•˜๋‹ค.
๊ฐ ํ•จ์ˆ˜ ๋ชจ๋“ˆ์˜ ํƒ€์ž… ํ™•์ธ ๊ฐ€๋Šฅํ•ด์ง„ ๋ชจ์Šต

์ด์ฒ˜๋Ÿผ Declaration Files์€ TS ์—์„œ JS ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ• ๋•Œ _.d.ts ์— JS์˜ ๋ชจ์–‘์„ ์ „๋‹ฌํ•ด TS์—์„œ ํƒ€์ž… ์—๋Ÿฌ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ํŒŒ์ผ์„ ์˜๋ฏธํ•œ๋‹ค.

#5.4 JSDoc

JS ํŒŒ์ผ์„ TS ์™€ ๊ฐ™์ด ๋ณดํ˜ธํ•˜๊ณ  ์‹ถ์„๋•Œ JS ์ฒซ ์ค„์— ์•„๋ž˜์™€ ๊ฐ™์ด ์ฃผ์„์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

TS ํŒŒ์ผ์ด JS ํŒŒ์ผ์„ ๊ฒ€์‚ฌํ•ด ์˜ค๋ฅ˜๋ฅผ ํ™•์ธํ•˜๊ณ , ์œ„์™€ ๊ฐ™์ด ์˜ค๋ฅ˜๋ฅผ ํ™œ์„ฑ์‹œ์ผœ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์•Œ๋ ค์ค€๋‹ค.

๊ทธ ์˜ค๋ฅ˜๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ฃผ์„์œผ๋กœ ํƒ€์ž…์„ ์„ค์ •ํ•จ์œผ๋กœ์จ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด ๋ฐฉ๋ฒ•์ด JSDoc์œผ๋กœ ์ฃผ์„์„ ์‚ฌ์šฉํ•ด JS ํŒŒ์ผ์— type ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

#5.5 Blocks

๋ธ”๋ก์ฒด์ธ ๊ตฌํ˜„ ์ดˆ๊ธฐ ์„ธํŒ…, TS ํšจ์œจ์„ฑ ์ฒด๊ฐํ•˜๊ธฐ

ts-node - Node.js์šฉ TS ์‹คํ–‰ ์—”์ง„ ๋ฐ REPL. ์‚ฌ์ „ ์ปดํŒŒ์ผ์—†์ด TS๋ฅผ ์ง์ ‘ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. nodemon

#5.6 Definitely Typed

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋กœ ๋งŒ๋“ค์–ด์ง€์ง€ ์•Š์€ ํŒจํ‚ค์ง€๋ฅผ ๋ฐ›์•˜๋Š”๋ฐ ํƒ€์ž… ์ •์˜๊ฐ€ ์—†์„๋•Œ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋Š”์ง€ !

DefinitelyTyped

npm์— ์กด์žฌํ•˜๋Š” ๊ฑฐ์˜ ๋Œ€๋ถ€๋ถ„์˜ ํŒจํ‚ค์ง€๋“ค์˜ ํƒ€์ž…์ด ์ •์˜๋˜์–ด ์žˆ๋Š” ์ €์žฅ์†Œ.

#5.7 Chain

๋ธ”๋ก์ฒด์ธ ๋งŒ๋“ค์–ด๋ด„

Last updated

Was this helpful?