๋ชฉ๋กDEV_IN/TypeScript (7)
let's get IT with DAVINA ๐ป
1. TypeScript ์ ์ฉ (1) ์๋ก์ด ํ๋ก์ ํธ๋ฅผ TypeScript๋ก ์์ฑํ๊ธฐ npx create-react-app ํ๋ก์ ํธ์ด๋ฆ --template typescript (2) ๊ธฐ์กด React์ TypeScript ์ ์ฉํ๊ธฐ #npm npm install typescript @types/node @types/react @types/react-dom @types/jest #yarn yarn add typescript @types/node @types/react @types/react-dom @types/jest 2. TypeScript ์ค์ tsc ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ tsconfig.json์ ์์ฑํ๋ค. tsc --init ์ํ๋ ์ต์ ์ ์ถ๊ฐํ์ฌ tsconfig.json ์ ์ค์ ํ๋ค. { "compile..
import crypto from "crypto" ๐ซ Module “crypto” has no default export. (๊ฐ์ ธ์ค๊ธฐ ๋ถ๊ฐ๋ฅ) SOL 1. import * as crypto from "crypto"โ SOL 2. tsconfig.jsonํ์ผ๋ก ๊ฐ์ esModuleInterop์ true๋ก ์ค์ { "include": ["src"], //tsํ์ผ๋ค์ด ์ด๋์ ์์ด? ์ง์ผ๋ด "compilerOptions": { "outDir": "build", //ts->js๋ก ์ปดํ์ผ๋๊ฑด ์ด๋์๋ค ์ ์ฅํ ๊บผ์ผ? "target": "ES6", //js๋ก ์ปดํ์ผ๋ ๋ ์ด๋ค ๋ฒ์ ์ ์ฌ์ฉํ ์ง ์ ํ ๊ฐ๋ฅ (ES6 ์ ค ์ถ์ฒ) "lib": ["ES6"], //๋ธ๋ผ์ฐ์ ํ๊ฒฝ์ด ์๋ NodeJS์์ ๊ฐ๋ฐํ ๊ผฌ์ dom ใดใด "s..
1. package.json ์ด๊ธฐํ //terminal mkdir typechain code typechain //vsc์ด๋ฆฐ๋ค //typechain/ํตํฉterminal npm init-y - package.json package.jsonํ์ผ์ด ์์ฑ๋๋ฉด, "main": "index.js" ์์ ๊ณ , scripts ์์ test๋ถ๋ถ ์์ ๊ณ ์์ ใฑใฑ { "name": "typechain", "version": "1.0.0", "description": "", "scripts": { "build": "tsc", "dev": "nodemon --exec ts-node src/index.ts", //srcํด๋ ์์ index.tsํ์ผ์ ์ฝ๋งจ๋๋ค์ ์๋ ์คํ์์ผ์ค "start": "node build/index.js..
๋ค์ด๊ฐ๊ธฐ ์ ํ๋ ์๊ณ ๊ฐ์ +1 Static JS method์ ๋๋ค. method๋ฅผ ํธ์ถํ ๋, ์๋๋ new Hi์ ๊ฐ์ instance๋ฅผ ์๋ก ์์ฑํด์ hello()๋ฅผ ํธ์ถํด์ผํ๋๋ฐ static ์ ์ ๋ฉ์๋๋ฅผ ์ฐ๋ฉด, ๋ฐ๋ก class์์ method ํธ์ถ ๊ฐ๋ฅ! class Hi { constructor() { static hello() { return "hello"; } } } Hi.hello(); //ok to go Type VS Interface ๋ ๊ฐ์ ๊ณตํต ๋ชฉํ? object์ ๋ชจ์๊ณผ ํ์ ์ ์ค๋ช ํด์ค๋๋ค. Type์ ๊ธฐ๋ฅ Type (Object) Shape of object (๊ฐ์ฒด๊ฐ ์ด๋ป๊ฒ ์๊ฒผ๋๊ฐ?)๋ฅผ ์ ์ ์์ต๋๋ค. Property Name์ ์ ์ ์์ต๋๋ค. -> nickname, ag..
Pre-Knowledge ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ(Object Oriented Programming) ⇒ ๊ฐ์ฒด์ ์ ์ฅ์์ ๋ณด๋๊ฒ!!! ์ฌ๋์ด ์ธ๊ณ๋ฅผ ๋ณด๊ณ ์ดํดํ๋ ๋ฐฉ๋ฒ์ ํ๋ด ๋ธ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ๋ฒ๋ก ์ค ํ๋ ⇒ ํ์ค ์ธ๊ณ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ๋ง๋ค ๋์ ์ ์ฉํ๋ค! “ํด๋์ค”๋ผ๊ณ ๋ถ๋ฆฌ๋ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์ฒญ์ฌ์ง์ ์ด์ฉํด ์ฝ๋ ์์ฑ โญ 4๊ฐ์ง ์ฃผ์ ๊ฐ๋ 1. Encapsulation(์บก์ํ) : ๋ฐ์ดํฐ์ ๊ธฐ๋ฅ์ ํ๋์ ๋จ์๋ก ๋ฌถ๋ ๊ฒ 2. Inheritance(์์) : ๊ธฐ๋ณธ ํด๋์ค์ ํน์ง์ ํ์ ํด๋์ค๊ฐ ์์๋ฐ๋๋ค. (๋ถ๋ชจ/์์) 3. Abstraction(์ถ์ํ) : ๋ด๋ถ ๊ตฌํ์ ์์ฃผ ๋ณต์กํ๋ฐ, ์ค์ ๋ก ๋ ธ์ถ๋๋ ๋ถ๋ถ์ ๋จ์ํ๊ฒ ๋ง๋ ๋ค๋ ๊ฐ๋ 4. Polymorphism(๋คํ์ฑ) : ๋๊ฐ์ ๋ฉ์๋์ฌ๋ ๋ค๋ฅธ ..
Call Signatures ๋ง์ฐ์ค๋ฅผ ๊ฐ๋ค ์ฌ๋ ค๋ณด๋ฉด ์์ ๋จ๋ ์ ๋ฐ์ค ํจ์์ ์ธ์ type ์ ์ + return type ์ ์ Type์ ๋จผ์ ์ ์ํ ๋ค -> ํจ์/์ฝ๋๋ฅผ ๊ตฌํํ์ instead of ํจ์๋ฅผ ๊ตฌํํ๋ฉด์ ๋์์ type์ ์ ์ํ๋ ๊ฒ๋ณด๋ค better //type ๋ฏธ๋ฆฌ ์ ์ type Add = (a:number, b:number) => number const add:Add = (a,b) => a+b //instead of const add = (a:number, b:number) => a+b Overloading ํจ์๊ฐ ์ฌ๋ฌ ๊ฐ์ call signatures๋ฅผ ๊ฐ์ง๊ณ ์์ ๋ ๋ฐ์ ๋ด๊ฐ ์ง์ ์ธ ์ผ์ ๊ฑฐ์ ์์ง๋ง, ์ธ๋ถ ํจํค์ง๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ๋ ๋ง์ด ๋ณผ ์ ์๊ธฐ ๋๋ฌธ์ ์์๋์! t..
TypeScript Javascript with syntax for types a strongly typed programming language that builds on JavaScript, giving you better tool at any scale JS์ ํ์ ์์ ์ฑ โฌ ๋ฒ์ ! TypeScript & VS Code ⇒ ๋ ๋ค Microsoft์์ ๊ฐ๋ฐํด์ ์ฃฝ์ด ์ ๋ง์ JavaScript VS TypeScript JS ⇒ ๊ฐ๋ฐ์๋ค์ด ๋ฉ์ฒญํ ์ค์๋ฅผ ํด๋ ์ดํดํด์ฃผ๋ ค ํ๋ ์ ์ฐํ ์ธ์ด [1,2,3,4]+ false(boolean) = “1,2,3,4false”(string) ⇒ TS๋ ๋ง๋ ์๋๋ ํธ์ถ์ ํ์ฉํ์ง ์์ ๋ฌธ์ ์๋ ํธ์ถ์ ์ ์ ์ ์ปดํจํฐ์์ ์ด๋ฏธ ์คํํ๊ณ ๋์ ์๋ฌ๋ผ๊ณ ๋งํด์ค ์ด๊ฒ์ด ๋ฐํ..