์ ์ฒด ๊ธ
[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 = ..