Language (11) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [TypeScript] ์ค์ฒฉ๋ ๊ฐ์ฒด์ ๊ฐ์ ํ์ ์ผ๋ก ๋ง๋ค๊ณ ์ถ์ ๋ ์ค์ฒฉ๋ ๊ฐ์ฒด์์ ๊ฐ๋ง ๋ฝ์์ ํ์ ์ผ๋ก ๋ง๋ค ์ ์์๊น?๐ค const ENDPOINTS = { AUTH: { SIGN_UP: 'POST /auth/sign-up', SIGN_IN: 'POST /auth/sign-in' }} ๋ง์ฝ ์ด๋ฐ ํํ์ ๊ฐ์ฒด๊ฐ ์๋ค๊ณ ํด๋ด ์๋ค. ์ด ๊ฐ์ฒด์ ๊ฐ์ ์ฌ์ฉํ๋ ค๋ฉด ENDPOINTS.AUTH.SIGN_UP ์ผ๋ก ์ ๊ทผํ ์ ์์ต๋๋ค. ์ ๊ฐ ํ๊ณ ์ถ์ ๊ฒ์ ์ด๋ ๊ฒ ์ค์ฒฉ๋ ๊ฐ์ฒด์์ value๋ง ๋ชจ์์ ํ๋์ ํ์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ์๋์ผ๋ก type Endpoint = 'POST /auth/sign-up' | 'POST /auth/sign-in' | ... ๋ก ์ ์ธํ ์๋ ์๊ฒ ์ง๋ง, ์ด ๊ฐ์ฒด์ ๋ชธ์ง์ด ํจ์ฌ ๋ ํฌ๋ค๊ณ ํ ๋๋ ๊ฝค๋ ๊ท์ฐฎ๊ณ ๋๋ฌ์ด ์ฝ๋๊ฐ ๋ .. [JavaScript] parseInt( ) vs Number( ) Javascript์์ parseInt( )์ Number( )์ ์ฐจ์ด๋ฅผ ์ ๋ฆฌํด๋ณด์์ต๋๋ค. parseInt( ) ๋ฌธ์์ด์ ํ์ฑํด์ ํน์ ์ง์์ ์ ์๋ฅผ ๋ฐํํฉ๋๋ค. ์ฒซ ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ string, ๋ ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ radix ์ ๋๋ค.๋ฌธ์์ด์์ ์ฒซ ๋ฒ์งธ ์ซ์ ๋ถ๋ถ์ ์ ์๋ก ๋ณํํ๊ณ , ์์์ ๊ณผ ์ซ์ ์ดํ์ ๋ฌธ์์ด์ ๋ฌด์ํฉ๋๋ค.radix๊ฐ 2~36 ๋ฒ์์ ๊ฐ์ด ์๋๊ฑฐ๋, ๊ณต๋ฐฑ์ด ์๋ ์ฒซ ๋ฌธ์๋ฅผ ์ ์๋ก ๋ณํํ ์ ์๋ ๊ฒฝ์ฐ NaN์ ๋ฐํํฉ๋๋ค.parseInt("123"); // 123 (๋ฌธ์์ด์ ์ ์๋ก ๋ณํ)parseInt("123.45"); // 123 (์์์ ์ดํ ์ซ์๋ ๋ฌด์)parseInt("123abc"); // 123 (์ซ์ ์ดํ์ ๋ฌธ์๋ ๋ฌด์)parseInt(" .. [TypeScript] Class vs Interface vs Type ์ฐจ์ด์ ์ ๋ฆฌ JavaScript Class vs TypeScript Class 1. ์์ฑ ์ด๊ธฐํ ์ฝ๋๋ฅผ ์๋ตํ ์ ์๋ค.TS Class๋ ์์ฑ์์ ๋งค๊ฐ๋ณ์ ํ์ ์ ์ธ๊ณผ ๋์์ ์ ๊ทผ ์ ์ด์(+readonly)๋ง ์ฌ์ฉํ๋ฉด ์์ฑ ์ด๊ธฐํ๋ฅผ ํ ์ ์๋ค.์ด๋๋ ์์ฑ์ด public์ด์ด๋ ๋ช ์ํด์ผ ํ๋ค.// JSclass User { constructor(firstName, lastName) { this.firstName = firstName; this.lastName = lastName; }}// TS// ์ปดํ์ผํ๋ฉด ์ JS ์ฝ๋์ ๋์ผํ๋คclass User { constructor(private firstName: string, private lastName: string) {}} 2. ์ ๊ทผ ์ ํ์(acces.. [TypeScript] Declaration File & JSDoc Declaration FileTypeScript ์ ์ธ ํ์ผ์ ์ฃผ๋ก JavaScript๋ก ์์ฑ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ชจ๋์ TypeScript์์ ์ฌ์ฉํ ๋ ํ์ํฉ๋๋ค.์ ์ธ ํ์ผ์ .d.ts ํ์ฅ์๋ฅผ ๊ฐ์ง๋ฉฐ ๋์ผํ ์ด๋ฆ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ชจ๋์ ํ์ ์ ์ ์ํฉ๋๋ค. Visual Studio Code์ ๊ฐ์ ํตํฉ๊ฐ๋ฐํ๊ฒฝ(IDE)์์๋ ์ ์ธ ํ์ผ์ ๋ถ๋ฌ์์ ๋ณด์ฌ์ฃผ๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ํ์ ์ ํ์ธํ ์ ์์ต๋๋ค.TypeScript๋ JavaScript ์ฝ๋๋ ๊ฐ์ด ์ธ ์ ์๋๋ก ํ์ฉํ์ง๋ง, ํ์ ์ ์๊ฐ ์๋ค๋ฉด ์ฌ์ค TypeScript๋ฅผ ์ฐ๋ ์๋ฏธ๊ฐ ์์ต๋๋ค. ๋ฐ๋ผ์ TypeScript์์ ์ ์ธ ํ์ผ์ ๊ผญ ํ์ํฉ๋๋ค.tsconfig.json์ "strict": true ๋ฅผ ์ค์ ํ๋ฉด ์ ์ธ ํ์ผ์ด ์๋ JavaScript ํจํค์ง์ ๋.. [TypeScript] TypeScript ํ์ ์ ๋ฆฌ Object๋ณ์๋ช : { key1: ํ์ , key2: ํ์ , ... }๋ณ์ ์ ์ธ๋ฌธ์ ํ์ฅํด ์์ ๊ฐ์ ํํ๋ก ํ์ ์ ๋ช ์ํ ์ ์์ต๋๋ค.ํ์ ์ฃผ์(type annotation)์ด๋ผ๊ณ ํฉ๋๋ค.์์const player: { name: string; age: number } = { name: "kim",}; Optional๋ณ์/ํ๋กํผํฐ๋ช ?: ํ์ ๋ฌผ์ํ๋ฅผ ๋ถ์ฌ์ ํน์ ํ๋กํผํฐ๋ ํจ์์ ๋งค๊ฐ๋ณ์๋ฅผ ์ต์ ๋๋ก ๋ง๋ค ์ ์์ต๋๋ค.์์// ์ธํฐํ์ด์ค ํ๋กํผํฐ์ ์ ์ฉinterface PaintOptions { shape: Shape; xPos?: number; yPos?: number;}// ๊ฐ์ฒด ํ๋กํผํฐ์ ์ ์ฉconst player: { name: string, age?: number } = { name: 'k.. [TypeScript] TypeScript ์๋์ผ๋ก ์ค์ ํ๊ธฐ ๊ฐ์ํ๋ ์์ํฌ๋ฅผ ์ฐ๋ฉด ํ์ ์คํฌ๋ฆฝํธ๊ฐ ์ค์ ๋ ํ๋ก์ ํธ๋ฅผ ์๋์ผ๋ก ๋ง๋ค์ด์ฃผ์ง๋ง, ๊ฐํน ํ์ ์คํฌ๋ฆฝํธ ์ค์ ์ ๊ฑด๋๋ ค์ผ ํ ๋๊ฐ ์์ต๋๋ค.๊ทธ๋๋ฅผ ์ํด ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ์๋์ผ๋ก ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ๊ธฐ๋กํด๋๊ธฐ๋ก ํ์ต๋๋ค.NodeJS๊ฐ ์ค์น๋์ด ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ์๋ ์ค์ ๋ฐฉ๋ฒ1. package.json ์์ฑnpm init -y 2. ํ์ ์คํฌ๋ฆฝํธ ์ค์นnpm install -D typescript 3. tsconfig.json ์์ฑtsc -init 4. tsconfig.json ์์ฑ{ "include": ["src"], // ์ปดํ์ผ ํ ํ์ผ์ ๊ฒฝ๋ก "compilerOptions": { "outDir": "build", // ์ปดํ์ผ ํ ํ์ผ์ ์ ์ฅํ ์์น "target": "ES6", // ์๋ฐ์คํฌ๋ฆฝํธ ์ด๋ค ๋ฒ.. [TypeScript] TypeScript ์ฅ์ ๊ณผ ํน์ง TypeScript๋?Microsoft์์ ๊ฐ๋ฐํ ์คํ ์์ค ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋๋ค.JavaScript์ ํ์ฅ์ผ๋ก, JavaScript์ ๋ชจ๋ ๊ธฐ๋ฅ์ ํฌํจํ๋ฉด์๋ ์ ์ ํ์ ์ ์ง์ํ๊ณ ์์ต๋๋ค. ์ TypeScript๋ฅผ ์ฐ๋๊ฐ?1. ํ์ ์์ ์ฑํ์ ์์ ์ฑ(Type Safety)์ ๋ณ์๋ ํจ์ ๋ฑ์ด ์ ์๋ ํ์ ๊ณผ ์ผ์นํ๋์ง ์ฌ๋ถ๋ฅผ ๋ณด์ฅํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.ํ์ ์์ ์ฑ์ ํตํด ์ป๋ ๊ฒ์ปดํ์ผ ํ์ ํ์ ์ฒดํฌ : ์ปดํ์ผ ๊ณผ์ ์์ ํ์ ์๋ฌ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๊ฒฝ๊ณ ๋ ์ค๋ฅ๋ฅผ ํตํด ๊ฐ๋ฐ์์๊ฒ ์๋ ค์ค๋๋ค.๊ฐ๋ ฅํ ํ์ ์์คํ : ํ์ ์ด ๋ช ํํ๊ฒ ์ง์ ๋์ด์ผ ํ๊ณ , ํ์ ์ ๋ํ ์๊ฒฉํ ๊ท์น์ ๊ฐ์ง๋๋ค.ํ์ ์ถ๋ก : ํ์ ์ ๋ช ์์ ์ผ๋ก ์ง์ ํ์ง ์์๋ ์ปดํ์ผ๋ฌ๊ฐ ํ์ ์ ์ถ๋ก ํด์ค๋๋ค.ํ์ ์์ ์ฑ ๋๋ถ์ ๋ฒ๊ทธ์ ๋ฐํ์ ์๋ฌ๋ฅผ ์ค์ผ ์ ์๊ณ .. [JavaScript] JavaScript์ ์ผ๊ธ๊ฐ์ฒด๋? ์๋ฐ์คํฌ๋ฆฝํธ์ ์ผ๊ธ ๊ฐ์ฒด๊ฐ ๋ฌด์์ธ์ง ์์๋ณด๊ธฐ ์ ์ ํจ์์ ์ ์ธ์๊ณผ ํํ์์ ๋ํด ์ง๊ณ ๋์ด๊ฐ๋ณด๊ฒ ์ต๋๋ค.ํจ์ ์ ์ธ์ & ํจ์ ํํ์์๋ฐ์คํฌ๋ฆฝํธ ํจ์์๋ ์ ์ธ์(Function Declarations)๊ณผ ํํ์(Function Expressions)์ด ์์ต๋๋ค.ํจ์ ์ ์ธ์function f1() { // ...}ํจ์ ํํ์ํํ์์๋ ์๋์ ๊ฐ์ด ๋๊ฐ์ง ๋ฐฉ์์ด ์์ต๋๋ค.const a = function f1() { //...};const b = () => { // ํ์ดํ ํจ์(Arrow Functions)}; ํํ์์์๋ ๋ณ์์ ํจ์์ ๋ฐํ๊ฐ์ด ์๋๋ผ ํจ์ ์์ฒด๋ฅผ ๋ด๋ ๋ชจ์์์ ๋๋ค.์ ์ธ์๊ณผ ๋ฌ๋ฆฌ ๋ณ์์ ํจ์๋ฅผ ์ด๋ป๊ฒ ๋์ ํ ์ ์๋ ๊ฒ์ผ๊น์?์ด๊ฒ์ ์ดํดํ๊ธฐ ์ํด ์๋ฐ์คํฌ๋ฆฝํธ์์ ๊ฐ์ฒด์ ์๋ฏธ๋ฅผ ์ดํดํด์ผ .. ์ด์ 1 2 ๋ค์