TypeScript

    [ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] ๊ณจ๋ฑ…์ด @ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ

    https://m.blog.naver.com/pjt3591oo/222120496022 [typescript] ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ 1ํŽธ - ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ 4๊ฐ€์ง€ ๊ธฐ๋ณธ๊ตฌ์กฐ ์•Œ์•„๋ณด๊ธฐ ์•ˆ๋…•ํ•˜์„ธ์š”. ๋ฉ๊ฐœ์ž…๋‹ˆ๋‹ค ์ด๋ฒˆ๊ธ€์—์„œ๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—์„œ ์ง€์›ํ•˜๋Š” ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ์˜ ๊ธฐ๋ณธ๊ตฌ์กฐ๋ฅผ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค... blog.naver.com https://sleepybird.tistory.com/158 [199์ผ์ฐจ]ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ Reference ๐Ÿ—‚๊ณต์‹๋ฌธ์„œ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ๋„ค์ŠคํŠธ๋‚˜ ์•ต๊ทค๋Ÿฌ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋งˆ์ฃผํ•˜๋‹ค๋ณด๋ฉด ์‹ฌ์‹ฌ์น˜์•Š๊ฒŒ ๋ณผ์ˆ˜์žˆ๋Š”๋…€์„์ด ์žˆ๋‹ค. ๋ฐ”๋กœ ์ด ๊ณจ๋ฑ…์ด๊ฐ€ ๋ถ™์–ด์ง„ '๋ฐ์ฝ”๋ ˆ์ดํ„ฐ' ๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๋…€์„์ด๋‹ค sleepybird.tistory.com ๊ณจ๋ฑ…์ด๊ฐ€ ๋ถ™์–ด์ง„ '๋ฐ์ฝ”๋ ˆ์ดํ„ฐ' ๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๋…€์„ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—๋งŒ ์žˆ๋Š”๊ฑด ์•„๋‹ˆ..

    [ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์˜ˆ์ œ] ์ •๊ทœ ํ‘œํ˜„์‹ regex, ์œ ํŠœ๋ธŒ์—์„œ id๊ฐ’๋งŒ ์ถ”์ถœํ•ด์„œ EMBED ํ•ด๋ณด๊ธฐ

    [ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์˜ˆ์ œ] ์ •๊ทœ ํ‘œํ˜„์‹ regex, ์œ ํŠœ๋ธŒ์—์„œ id๊ฐ’๋งŒ ์ถ”์ถœํ•ด์„œ EMBED ํ•ด๋ณด๊ธฐ

    https://youtu.be/t3M6toIflyQ ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ์ •๊ทœํ‘œํ˜„์‹์€ ๊ผญ ์“ฐ๊ฒŒ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋ฃจ ๋‚  ์žก๊ณ , ์•Œ์•„๋‘๋Š” ๊ฒƒ์ด ์ข‹์Œ *์—˜๋ฆฌ๋‹˜ ์˜์ƒ์„ ๋ณด๊ณ  ํ•™์Šตํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ์›ํ•˜๋Š” ํŒจํ„ด์„ ์ž‘์„ฑํ•ด๋‚˜๊ฐ€๋Š”์ง€๊ฐ€ ์ค‘์š” ํฌ์ธํŠธ์ด๋‹ค. ๐Ÿ““ ์˜์ƒ์—์„œ ์–ธ๊ธ‰๋œ ์ž๋ฃŒ๋“ค ๊นƒํ—ˆ๋ธŒ ์ •๋ฆฌ โ‡ข https://github.com/dream-ellie/regex RegexOne(ํ€ด์ฆˆ) โ‡ข https://regexone.com/ GitHub - dream-ellie/regex Contribute to dream-ellie/regex development by creating an account on GitHub. github.com RegexOne - Learn Regular Expressions - Lesson 1: An Intr..

    [ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] declare namespace

    https://velog.io/@kmp1007s/Typescript-%EB%AA%A8%EB%93%88%EA%B3%BC-%EA%B4%80%EB%A0%A8%EB%90%9C-%EC%9D%B4%EC%95%BC%EA%B8%B0

    [ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] .d.ts ์— ๋Œ€ํ•œ ์ดํ•ด

    https://typescript-kr.github.io/pages/declaration-files/creating-dts-files-from-js.html https://spookyjelly.tistory.com/39 .d.ts ์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค. Js ํŒŒ์ผ์€ js ํŒŒ์ผ๋ผ๋ฆฌ๋งŒ ๋ฐ”๋ผ๋ณผ ์ˆ˜ ์žˆ๋‹ค Ts ํŒŒ์ผ์€ ts ํŒŒ์ผ๋ผ๋ฆฌ๋งŒ ๋ฐ”๋ผ๋ณผ ์ˆ˜ ์žˆ๋‹ค TypeScript 3.7์—์„œ, TypeScript๋Š” JSDoc ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•œ JavaScript์—์„œ .d.ts ํŒŒ์ผ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. ๐Ÿ”‘.d.ts ํŒŒ์ผ์€ ๊ธฐ์กด JS ๋ชจ๋“ˆ์„ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์šฉ์ดํ•˜๋„๋ก ๊ธฐ์กด JS ๋ชจ๋“ˆ์˜ ํƒ€์ž…์ •๋ณด๋ฅผ ๋ณ„๋„์˜ ํŒŒ์ผ๋กœ ์„ ์–ธํ•œ๊ฒƒ๐Ÿ”‘ ๐Ÿงจd.ts ํŒŒ์ผ์€ ํƒ€์ž…์„ ์–ธ๋งŒ ์ด๋ฃจ์–ด์ง์„ ์œ ์˜๐Ÿงจ d.ts ์ž‘์„ฑ๋ฒ• @types ์•ˆ์— ํ•ด๋‹น ๋ชจ๋“ˆ..

    [ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] ! Non-null assertion operator

    !: ์ด๋ž€? ๋Š๋‚Œํ‘œ๋ฅผ ์ง€์šฐ๊ณ  ๋‚˜์˜ค๋Š” ์—๋Ÿฌ : 'ui'์€(๋Š”) ์ด๋‹ˆ์…œ๋ผ์ด์ €๊ฐ€ ์—†๊ณ  ์ƒ์„ฑ์ž์— ํ• ๋‹น๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.ts(2564) ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ˜น์‹œ null์ผ์ง€๋„ ๋ชจ๋ฅด๋Š” ๋Œ€์ƒ์— ์ปดํŒŒ์ผ์—๋Ÿฌ๋ผ์ธ ๋„์›Œ์ฃผ๋Š”๋ฐ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ null์ด ์•„๋‹ˆ๋ผ๊ณ  ํ™•์‹ ์ด ์žˆ์„๋•Œ์— TSC Null์ฒดํฌ์— ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ํ•ด์ฃผ๋Š” ๊ฒƒ https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-0.html#non-null-assertion-operator Non-null assertion operator A new ! post-fix expression operator may be used to assert that its operand is non-null and non-und..

    ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ + ๋ฆฌ๋•์Šค

    https://devlog-h.tistory.com/33 Typescript์—์„œ Redux๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์ž ์•ˆ๋…•ํ•˜์„ธ์š” ํœด๋ชฌ๋žฉ ์ดˆ๋ณด ๊ฐœ๋ฐœ์ž ์ฐจ์•”์ƒˆ์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” Typescript ํ™˜๊ฒฝ์—์„œ Redux๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Redux๋Š” React ์ƒ์—์„œ state๊ด€๋ฆฌ๊ฐ€ ํž˜๋“ค ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค. โ€ป devlog-h.tistory.com

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

    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..

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

    ์„ค์น˜์™€ ๋ณ€ํ™˜ ํ•œ์ค„ ์š”์•ฝ 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). ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ์ฝ”๋“œ๋Š” ์–ธ์ œ ์•ˆ์ „ํ•ด์ง€๋Š”๊ฐ€. ํƒ€์ž…์Šคํฌ๋ฆฝ..