Dream๐Ÿฐng
article thumbnail
[TS] Drag & Drop 4๏ธโƒฃ
๐Ÿ“ Study/TypeScript 2023. 4. 3. 14:59

๐Ÿ‘ Drag & Drop 4๏ธโƒฃ Abstract class & method abstract class => ์ธ์Šคํ„ด์Šคํ™” ํ•  ์ˆ˜ ์—†๋Š” ํด๋ž˜์Šค, ์ƒ์†๋งŒ ๊ฐ€๋Šฅ abstract method => ์ƒ์† ํ›„ ๊ตฌํ˜„ ๊ฐ€๋Šฅ / abstract ๋ฉ”์†Œ๋“œ๋Š” private๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค ์ถ”์ƒํ™”ํ• ๊ฑฐ๋ฉด private์„ ์‚ญ์ œํ•ด์•ผํ•จ.. ์ถ”์ƒ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž์—์„œ ๋ฉ”์†Œ๋“œ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒƒ๋ณด๋‹ค ํ™•์žฅํ•œ ํด๋ž˜์Šค์—์„œ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒƒ์ด ๋” ์•ˆ์ „ ์ •๋ฆฌ ์˜ˆ์ • Extends class with generic ๋ถ€๋ชจ๊ฐ€ ๋  ํด๋ž˜์Šค์—์„œ ์ œ๋„ค๋ฆญ์œผ๋กœ ํƒ€์ž… ์ง€์ • ํ™•์žฅ๋œ ํด๋ž˜์Šค์—์„œ ์ œ๋„ค๋ฆญ์œผ๋กœ ํŠน์ • ํƒ€์ž…์„ ์ „๋‹ฌ ์ •๋ฆฌ ์˜ˆ์ • Getter return ๊ฐ’์ด ์กด์žฌํ•ด์•ผํ•จ ์ ‘๊ทผ์€ ์ผ๋ฐ˜ ํ”„๋กœํผํ‹ฐ์ฒ˜๋Ÿผ (get hello()๊ฐ€ ์žˆ๋‹ค๋ฉด this.hello()๊ฐ€ ์•„๋‹ˆ๋ผ this.hello๋กœ)..

article thumbnail
[TS] Drag & Drop 3๏ธโƒฃ
๐Ÿ“ Study/TypeScript 2023. 3. 31. 11:21

๐Ÿ‘ Drag & Drop 3๏ธโƒฃ Singleton pattern ๋‚ด์šฉ ์ถ”๊ฐ€ ์˜ˆ์ • Enum ๋‚ด์šฉ ์ถ”๊ฐ€ ์˜ˆ์ •

article thumbnail
[TS] Drag & Drop 2๏ธโƒฃ
๐Ÿ“ Study/TypeScript 2023. 3. 30. 01:33

๐Ÿ‘ Drag & Drop 2๏ธโƒฃ Tuple is an array tuple์€ JavaScript์—๋Š” ์—†๊ณ  TypeScript์—๋งŒ ์žˆ๋Š” ํƒ€์ž…์ด๋‹ค. ๋”ฐ๋ผ์„œ ํŠน์ • ๋ณ€์ˆ˜๋ฅผ tuple ํƒ€์ž…์œผ๋กœ ์ง€์ •ํ–ˆ์„ ๋•Œ, ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ tuple ํƒ€์ž…์ž„์„ ํ™•์ธํ•  ์ˆ˜ ์—†๋‹ค. const engineer: [string, string, string] = ['Apeach', 'Ogu', 'Choonsik']; engineer instanceof Tuple; // โŒ typeof engineer === 'tuple'; // โŒ (false) But tuple์€ TypeScript์—๋งŒ ์กด์žฌํ•˜๋Š” ํƒ€์ž…์ด์ง€๋งŒ JavaScript๋กœ ์ƒ๊ฐํ•ด๋ดค์„ ๋•Œ ๊ฒฐ๊ตญ์€ ๋ฐฐ์—ด์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๊ฐ€ tuple์ด ๋งž๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ๋ฐฐ์—ด์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธ..

article thumbnail
[TS] Project Drag & Drop 1๏ธโƒฃ
๐Ÿ“ Study/TypeScript 2023. 3. 27. 12:31

Project Drag & Drop 1๏ธโƒฃ ! & as TypeScript์—์„œ DOM ์กฐ์ž‘ํ•  ๋•Œ ์˜ค๋ฅ˜ ํ•ด๊ฒฐํ•˜๊ธฐ class ProjectInput { templateElement: HTMLTemplateElement; hostElement: HTMLDivElement; constructor() { this.templateElement = document.getElementById( 'project-input' )! as HTMLTemplateElement; this.hostElement = document.getElementById('app')! as HTMLDivElement; } } document.getElementById('id');์—์„œ !๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์ด์œ ๋Š” TypeScript๊ฐ€ ์ด๊ฒƒ์ด null์ผ์ˆ˜..

article thumbnail
[TS] Decorators 3๏ธโƒฃ
๐Ÿ“ Study/TypeScript 2023. 3. 24. 19:36

Decorators 3๏ธโƒฃ Validation decorator ํ”„๋กœํผํ‹ฐ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ์˜ˆ์‹œ class Course { title: string; price: number; constructor(t: string, p: number) { this.title = t; this.price = p; } } const courseForm = document.querySelector('form')!; courseForm.addEventListener('submit', event => { event.preventDefault(); const titleEl = document.getElementById('title') as HTMLInputElement; const priceEl = document.getElementB..

article thumbnail
[Algorithm] Object & Array
๐Ÿ“ Study/Algorithm 2023. 3. 24. 00:38

Object & Array Big O of object ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹์„ ๋•Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์ •๋ ฌํ•  ํ•„์š”๊ฐ€ ์—†์„ ๋•Œ ๋น ๋ฅธ ์ ‘๊ทผ / ์‚ฝ์ž… / ์‚ญ์ œ๊ฐ€ ํ•„์š”ํ•  ๋•Œ ๊ฐ์ฒด์˜ Big O ํƒ์ƒ‰ - O(N) ์‚ฝ์ž… - O(1) ์‚ญ์ œ - O(1) ์ ‘๊ทผ - O(1) ํƒ์ƒ‰์ด O(N)์„ ๋”ฐ๋ฅด๋Š” ์ด์œ ๋Š” ํŠน์ •ํ•œ ์ •๋ณด๊ฐ€ ์–ด๋–ค ๊ฐ’์— ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. const information = { name: 'Shoupeach', isApeach: true, favoriteNumbers: [4, 8] }; information์ด๋ž€ ๊ฐ์ฒด๊ฐ€ ์กด์žฌํ•  ๋•Œ ์—ฌ๊ธฐ์„œ true๋ผ๋Š” ๊ฐ’์ด information์—์„œ ์–ด๋””์— ์ €์žฅ๋˜์–ด ์žˆ๋Š”์ง€ ์•Œ๊ธฐ ์œ„ํ•ด์„œ ๋จผ์ € name์„ ํ™•์ธํ•˜๊ณ  ๊ฐ’์„ ํ™•์ธํ•œ๋‹ค. name์˜ ๊ฐ’์€ Shoupeach์ด๊ธฐ ๋•Œ๋ฌธ์— ํ†ต๊ณผํ•œ ๋’ค i..

article thumbnail
[React] React 1๏ธโƒฃ
๐Ÿ“ Study/React.js 2023. 3. 23. 17:19

React 1๏ธโƒฃ What is React? ๋ฆฌ์•กํŠธ๋Š” ์„ ์–ธํ˜•, ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜์˜ JavaScript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ UI๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค. JSX๋ผ๋Š” ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•ด SPA๋ฅผ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๊ณ , CSR๋กœ ์ž‘๋™ํ•œ๋‹ค. Declarative vs Imperative ๋ฆฌ์•กํŠธ๋Š” ์„ ์–ธํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋‹ค. ๊ทธ๋ž˜์„œ ์„ ์–ธํ˜•์ด ๋ญ”๋ฐ..?! ๐Ÿค” ์„ ์–ธํ˜•์€ ๋ฌด์—‡์„ ํ•  ๊ฒƒ์ธ์ง€์— ํฌ์ปค์Šค๋ฅผ ๋‘” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ๋ฒ•์ด๋‹ค. ๋ฐ˜๋ฉด์— ์„ ์–ธํ˜•์˜ ๋ฐ˜๋Œ€์ธ ๋ช…๋ นํ˜•์€ ์–ด๋–ป๊ฒŒ ํ•  ๊ฒƒ์ธ์ง€์— ์ค‘์ ์„ ๋‘๊ณ  ์žˆ๋‹ค. ์„ ์–ธํ˜•์˜ ๋ฌด์—‡์„๊ณผ ๋ช…๋ นํ˜•์˜ ์–ด๋–ป๊ฒŒ๋ฅผ ์‹ค์ƒํ™œ์—์„œ ๋น—๋Œ€์–ด ์ด์•ผ๊ธฐ ํ•ด๋ณด์ž๋ฉด, ๋ง›์žˆ๋Š” ๋ผ๋ฉด ๐Ÿœ์„ ๋จน๋Š”๋‹ค๊ณ  ๊ฐ€์ •ํ•  ๋•Œ ์•„๋ž˜์™€ ๊ฐ™์€ ์ฐจ์ด๋ฅผ ๋ณด์ธ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๊ฒ ๋‹ค.. ์„ ์–ธํ˜• (๋ฌด์—‡์„ ๐Ÿค”) ์ปต๋ผ๋ฉด์„ ๋จน์„๋ž˜! ๋ช…๋ นํ˜• (์–ด๋–ป๊ฒŒ ๐Ÿ™„) ๋šœ๊ป‘ ํ˜•ํƒœ์˜ ์šฉ๊ธฐ๋ฅผ ๊ฐ€์ง„ ๋ผ๋ฉด์˜ ๋šœ๊ป‘์„..

article thumbnail
[Git] Git
๐Ÿ“ Study/Git 2023. 3. 23. 14:40

Git What is Git? Git์€ ๋ฒ„์ „์„ ๊ด€๋ฆฌํ•˜๋Š”๋ฐ ๋„์›€์„ ์ฃผ๋Š” VCS(Version Control System) ์ค‘ ํ•˜๋‚˜์ด๋‹ค. VCS ์ค‘์—์„œ๋„ DVCS(Distributed Version Control System)์œผ๋กœ, ์„œ๋ฒ„๊ฐ€ off-line์ด๊ฑฐ๋‚˜ ์ธํ„ฐ๋„ท์ด ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š์„ ๋•Œ๋„ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๊ณ  ์„œ๋ฒ„์— ์ €์žฅ๋œ ๋ฒ„์ „์ด ์‚ญ์ œ๋˜์–ด๋„ ๋ณต๊ตฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด ํŠน์ง•์ด๋‹ค. Installation ๋‚˜๋Š” macOS๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— mac์—์„œ Git ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„..๐Ÿ˜„ ์šฐ์„  ์†Œ์ค‘ํ•œ ํ„ฐ๋ฏธ๋„ ์ฐฝ์„ ๋„์›Œ์ค€๋‹ค. ํ„ฐ๋ฏธ๋„ ์ฐฝ์— ๋‹ค์Œ์˜ ๋ช…๋ น์–ด๋ฅผ ์ณ์ค€๋‹ค. git ๋ช…๋ น์–ด๋ฅผ ์น˜๋ฉด ์„ค์น˜ํ•˜๋ผ๋Š” ์ฐฝ์ด ๋œฐํ…๋ฐ, ์„ค์น˜ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์„ค์น˜ ๋! ๋‚˜๋Š” ์ด๋ฏธ ์„ค์น˜๋˜์–ด์žˆ๋Š” ์ƒํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์— ์บก์ณ๋ฅผ ํ•  ์ˆ˜ ์—†์—ˆ์Œ..๐Ÿ˜… ์„ค์น˜๋ฅผ ์™„๋ฃŒํ•˜๊ณ  ..

article thumbnail
[TS] Decorators 2๏ธโƒฃ
๐Ÿ“ Study/TypeScript 2023. 3. 22. 11:56

Decorators 2๏ธโƒฃ Decorator the synthetic sugar ํด๋ž˜์Šค ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋Š” constructor๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด์„œ ๊ธฐ์กด constructor๋ฅผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. constructor๋ฅผ ํ™•์žฅํ•  ๋•Œ super();๋Š” ๊ธฐ์กด ํด๋ž˜์Šค ํ™•์žฅ์—์„œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ธฐ์กด ํด๋ž˜์Šค์˜ ์ •๋ณด๋ฅผ ๊ธฐ์–ตํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. function ClassDeco() { return function(target: T) { return class extends target { constructor(..._: any[]) { super(); // not necessary /* write your code */ } } } } @ClassDeco class Person { name = 'Shou'; get name() {..

article thumbnail
[TS] Decorators 1๏ธโƒฃ
๐Ÿ“ Study/TypeScript 2023. 3. 20. 12:51

Decorators 1๏ธโƒฃ What is Decorators? ํด๋ž˜์Šค, ํ”„๋กœํผํ‹ฐ, ์•ก์„ธ์„œ, ๋ฉ”์†Œ๋“œ, ํŒŒ๋ผ๋ฏธํ„ฐ์— ์ฒจ๋ถ€ํ•  ์ˆ˜ ์žˆ๋Š” ํŠน๋ณ„ํ•œ ํ•จ์ˆ˜์ด๋‹ค. ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๊ฐ€ ๋ถ™์€ ํด๋ž˜์Šค ๋“ฑ๋“ฑ ์—์„œ๋Š” ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ์—์„œ ์ •์˜๋œ ๊ธฐ๋Šฅ์ด ๋™์ž‘ํ•œ๋‹ค. ์ •์˜ํ•œ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํ•จ์ˆ˜๋ฅผ @ ๊ธฐํ˜ธ๋ฅผ ๋ถ™์—ฌ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. function ClassDeco(constructor: Function) { console.log('Logging...'); console.log(constructor); } @ClassDeco class Person { name = 'Shou'; constructor() { console.log('Creating person object...'); } } /* Logging... class Person { constructo..

article thumbnail
[TS] Generics 2๏ธโƒฃ
๐Ÿ“ Study/TypeScript 2023. 3. 17. 12:07

Generics 2๏ธโƒฃ Keyof Constraint ์ œ๋„ค๋ฆญ์œผ๋กœ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ œ์•ฝ ์กฐ๊ฑด์„ ์ค„ ๋•Œ, ํ‚ค ๊ฐ’์„ ํ•„์š”๋กœ ํ•œ๋‹ค๋ฉด keyof๋ฅผ ์‚ฌ์šฉํ•œ ์ œ์•ฝ ์กฐ๊ฑด์„ ์“ฐ๋ฉด ์‹ค์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. function extractAndConvert( obj: T, key: U ) { return 'Value: ' + obj[key]; } extractAndConvert({}, 'name'); // Error occurred ์ œ๋„ค๋ฆญ T์˜ ์ œ์•ฝ ์กฐ๊ฑด์œผ๋กœ object๋ฅผ ์„ค์ •ํ•ด์ฃผ์—ˆ๊ณ , U์˜ ์ œ์•ฝ ์กฐ๊ฑด์œผ๋กœ T์˜ key๋ฅผ ์„ค์ •ํ•ด์ฃผ์—ˆ๋‹ค. extractAndConvert๋กœ ๋นˆ ๊ฐ์ฒด({})์™€ name์ด๋ผ๋Š” ๋ฌธ์ž์—ด์„ ์ „๋‹ฌํ–ˆ์„ ๋•Œ, ๋นˆ ๊ฐ์ฒด์—๋Š” name์ด๋ผ๋Š” ํ‚ค ๊ฐ’์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ปดํŒŒ์ผ ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค! ์ œ๋„ค๋ฆญ์œผ๋กœ U extends keyof..

article thumbnail
[Algorithm] Big O Notation
๐Ÿ“ Study/Algorithm 2023. 3. 16. 23:43

Big O Notation Need for Big O Notation "๋ฌธ์ž์—ด์„ ๋ฐ›์•„์„œ ์ด๋ฅผ ๋’ค์ง‘์–ด ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜์‹œ์˜ค." for๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ๋‚ด์žฅ ๋ฌธ์ž์—ด ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋“ฑ๋“ฑ ์ด์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…๋งŒ 10๊ฐ€์ง€๊ฐ€ ๋„˜๋Š”๋‹ค... ๐Ÿซ  ์ด ์ค‘์— ๊ฐ€์žฅ best์ธ ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ผ๊นŒ? ์—ฌ๋Ÿฌ ์ฝ”๋“œ๋ฅผ ๋น„๊ตํ•˜๊ณ  ์„ฑ๋Šฅ์„ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๋ฉด ์ข‹์ง€ ์•Š์„๊นŒ? What is Big O Notation? 1๋ถ€ํ„ฐ n๊นŒ์ง€ ๋”ํ•˜๋Š” ํ•จ์ˆ˜๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•  ๋•Œ, 2๊ฐ€์ง€ ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค. function add1(n) { let result = 0; for (let i = 1; i = 0; j--) { console.log(j); } } ์ด 2๊ฐœ์˜ for๋ฌธ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— O(N) + O(N)์œผ๋กœ ๊ฒฐ๊ตญ O(N)์ธ..

profile on loading

Loading...