์ „์ฒด ๊ธ€

์ „์ฒด ๊ธ€

    [Html,Css] ๋ฐ˜์‘ํ˜• ํ—ค๋” ๋”ฐ๋ผ๋งŒ๋“ค๊ธฐ

    [Html,Css] ๋ฐ˜์‘ํ˜• ํ—ค๋” ๋”ฐ๋ผ๋งŒ๋“ค๊ธฐ

    https://youtu.be/X91jsJyZofw *์œ„ ์—˜๋ฆฌ๋‹˜ ์˜์ƒ์„ ๋ณด๊ณ  ํ•™์Šตํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. html Two Angel Home Gallery Sale FAQ Blog css body { margin: 0; font-family: Poppins Source Sans Pro; } a { text-decoration: none; color: #fff; } .navbar { display: flex; justify-content: space-between; align-items: center; background-color: #263343; padding: 8px 12px; } .navbar__logo { font-size: 24px; color: white; } .navbar__logo i { colo..

    [์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ] for๋ฌธ๊ณผ foreach ์‹ค์ „ ์˜ˆ์ œ ๋น„๊ต

    for๋ฌธ let tabs = document.querySelectorAll(".task-tabs div"); for (let i = 1; i menu.addEventListener("click", (event) => getNewsByTopic(event)) ); const getNewsByTopic = (event) => { console.log("ํด๋ฆผ๋จ", event.targe..

    [ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] ํŒฉํ† ๋ฆฌ ํŒจํ„ด

    1๋ฒˆ ๋ฐฉ์‹ interface Shoe { purpose: string; } class BalletFlat implements Shoe { purpose = "dancing"; } class Boot implements Shoe { purpose = "woodcutting"; } class Sneaker implements Shoe { purpose = "walking"; } class ShoeFactory { static create(Type: "balletFlat" | "boot" | "sneaker"): Shoe { switch (Type) { case "balletFlat": return new BalletFlat(); break; case "boot": return new Boot(); break..

    [์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ] Array.from( {length} ๊ตฌ๋ฌธ์—์„œ {length}์€ ์œ ์‚ฌ๋ฐฐ์—ด?

    https://velog.io/@teihong93/Array.from%EC%9D%84-%ED%86%B5%ED%95%9C-%EB%B0%B0%EC%97%B4%EC%9D%98-%EC%B4%88%EA%B8%B0%ED%99%94

    [ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] ์—ฐ์Šต์šฉ์œผ๋กœ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์„ธํŒ…

    ์„ค์น˜์™€ ๋ณ€ํ™˜ ํ•œ์ค„ ์š”์•ฝ node.js ์„ค์น˜ → npm i -g typescript → tsconfig.json ์ƒ์„ฑ → tsc -w ts๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ๋„ node์—์„œ๋„ ์ฝํžˆ์ง€ ์•Š๋Š”๋‹ค. ts๋Š” js ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. index.ts๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค๋ฉด tsc index.ts ๋ž€ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅ main.js๋ž€ ํŒŒ์ผ์ด ์ƒˆ๋กœ ์ƒ์„ฑ๋œ๋‹ค. ์ด ๋ณ€ํ™˜๋œ js๋Š” ์ด์ œ ๋ธŒ๋ผ์šฐ์ €๋‚˜ node์—์„œ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค. ts๋ฅผ js๋กœ ๋งค๋ฒˆ ์ˆ˜๋™ ๋ณ€ํ™˜ tsc ํŒŒ์ผ๋ช….ts ๋…ธ๋“œ์—์„œ ๊ฐ„ํŽธํ•˜๊ฒŒ ์‹คํ–‰ ts-node ์„ค์น˜ ๋ช…๋ น์–ด: ๋‚ด๋ถ€์ ์œผ๋กœ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•ด์„œ ๋…ธ๋“œ์—์„œ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ ํ•œ๋ฒˆ์— ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ํˆด npm install -g ts-node ์„ค์น˜ ํ›„ ๊ฐ€๋ น index.ts๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ts-no..

    [ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ปดํŒŒ์ผ๋Ÿฌ(Typescript Compiler, TSC)

    ์ปดํŒŒ์ผ๋Ÿฌ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ปดํŒŒ์ผ๋Ÿฌ(Typescript Compiler, TSC) ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋‚˜ ์ž๋ฐ” ๊ฐ™์€ ์ฃผ์š” ์–ธ์–ด์™€๋Š” ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ ํ”„๋กœ๊ทธ๋žจ์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ž‘์„ฑํ•œ ๋‹ค์ˆ˜์˜ ํ…์ŠคํŠธ ํŒŒ์ผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ํ…์ŠคํŠธ๋ฅผ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํŒŒ์‹ฑํ•˜์—ฌ ์ถ”์ƒ ๋ฌธ๋ฒ• ํŠธ๋ฆฌ(abstract syntax tree, AST)๋ผ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ๋ณ€ํ™˜ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ AST๋ฅผ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ ๋Ÿฐํƒ€์ž„ ํ”„๋กœ๊ทธ๋žจ์— 2์—์„œ ๋ณ€ํ™˜๋œ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅ, ํ‰๊ฐ€ ํ›„ ๊ฒฐ๊ณผ์–ป์Œ. ์ฆ‰, ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์ด๋ž€, ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํŒŒ์‹ฑํ•ด AST๋กœ ๋งŒ๋“ค๊ณ , ๋‹ค์‹œ AST๋ฅผ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•œ ๊ฒƒ์„ ๋Ÿฐํƒ€์ž„์ด ํ‰๊ฐ€ํ•˜๋„๋ก ์ง€์‹œํ•˜๋Š” ๊ฒƒ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค(๋ฐ”์ดํŠธ์ฝ”๋“œX). ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ์ฝ”๋“œ๋Š” ์–ธ์ œ ์•ˆ์ „ํ•ด์ง€๋Š”๊ฐ€. ํƒ€์ž…์Šคํฌ๋ฆฝ..

    [ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] ํ•œ์ •๋œ ๋‹คํ˜•์„ฑ, ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ด์ง„ํŠธ๋ฆฌ ์˜ˆ์ œ ๋ถ„์„

    [ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] ํ•œ์ •๋œ ๋‹คํ˜•์„ฑ, ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ด์ง„ํŠธ๋ฆฌ ์˜ˆ์ œ ๋ถ„์„

    ๋ณธ ํฌ์ŠคํŒ… ์˜ˆ์ œ ๋ฏธ๋ฆฌ๋ณด๊ธฐ 1. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์˜ˆ์ œ ๋‚ด๊ฐ€ ํ’€์–ด๋ณธ ๊ฒƒ(ํ•œ ํฌ์ธํŠธ ๋ฏธ์Šค, ์•„์ง๋„ ์ƒ์„ฑ์ž์— ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ๋ฐ›์•„๋“ค์ด๋Š”๊ฒŒ ์–ด์ƒ‰...) type TreeNode = { value: string; }; type LeafNode = TreeNode & { isLeaf: true; }; type InnerNode = TreeNode & { children: [TreeNode] | [TreeNode, TreeNode]; }; let a: TreeNode = { value: "a" }; //ํ†ต๊ณผ let b: LeafNode = { value: "b", isLeaf: true }; //ํ†ต๊ณผ let c: InnerNode = { value: "c", children: [b] }; //ํ†ต๊ณผ let a1 = ..