Tiny Star
[TypeScript] 클래슀
Β·
πŸ“šSTUDY/TypeScript
νƒ€μž…μŠ€ν¬λ¦½νŠΈμ˜ 클래슀클래슀 μ •μ˜const employee = { name: "Jung", age: 25, position: "developer", work() { console.log("일함"); },};μœ„ 객체와 같은 ν˜•νƒœμ˜ 클래슀λ₯Ό μ •μ˜ν•œλ‹€κ³  ν•΄λ³΄μž. λ¨Όμ € 클래슀의 ν•„λ“œμΈ name, age, position을 μ„ μ–Έν•œλ‹€.class Employee { // ν•„λ“œ name; age; position;}μœ„μ™€ 같이 ν•„λ“œλ₯Ό μ •μ˜ν•˜λ©΄, ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜μ™€ λ™μΌν•˜κ²Œ 암묡적 any νƒ€μž…μœΌλ‘œ μΆ”λ‘ λ˜λ©° strict μ˜΅μ…˜μ΄ true둜 μ„€μ •λ˜μ–΄ μžˆμ„κ²½μš° 였λ₯˜κ°€ λ°œμƒν•˜κ²Œ λœλ‹€. λ”°λΌμ„œ ν•„λ“œ μ„ μ–Έ μ‹œ νƒ€μž…μ„ ν•¨κ»˜ μ •μ˜ν•΄μ£Όμ–΄μ•Ό ν•œλ‹€.class Employee { // ν•„λ“œ name: string; age..
[JavaScript] 상속에 μ˜ν•œ 클래슀 ν™•μž₯
Β·
πŸ“šSTUDY/JavaScript
클래슀 상속과 μƒμ„±μž ν•¨μˆ˜ 상속상속에 μ˜ν•œ 클래슀 ν™•μž₯은 ν”„λ‘œν† νƒ€μž… 기반 μƒμ†κ³ΌλŠ” λ‹€λ₯Έ κ°œλ…μ΄λ‹€. ν”„λ‘œν† νƒ€μž… 기반 상속은 ν”„λ‘œν† νƒ€μž… 체인을 톡해 λ‹€λ₯Έ 객체의 μžμ‚°μ„ μƒμ†λ°›λŠ” κ°œλ…μ΄μ§€λ§Œ 상속에 μ˜ν•œ 클래슀 ν™•μž₯은 κΈ°μ‘΄ 클래슀λ₯Ό 상속받아 μƒˆλ‘œμš΄ 클래슀λ₯Ό ν™•μž₯ν•˜μ—¬ μ •μ˜ν•˜λŠ” 것이닀.ν΄λž˜μŠ€μ™€ μƒμ„±μž ν•¨μˆ˜λŠ” μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 수 μžˆλŠ” ν•¨μˆ˜λΌλŠ” μ μ—μ„œ μœ μ‚¬ν•˜μ§€λ§Œ, ν΄λž˜μŠ€λŠ” 상속을 톡해 κΈ°μ‘΄ 클래슀λ₯Ό ν™•μž₯ν•  수 μžˆλŠ” 문법이 μ œκ³΅λ˜λŠ” 반면, μƒμ„±μž ν•¨μˆ˜λŠ” κ·Έλ ‡μ§€ μ•Šλ‹€.예λ₯Ό λ“€μ–΄, 동물을 μΆ”μƒν™”ν•œ Animal ν΄λž˜μŠ€μ™€ μƒˆμ™€ μ‚¬μžλ₯Ό μΆ”μƒν™”ν•œ Bird, Lion 클래슀λ₯Ό 각각 μ •μ˜ν•œλ‹€κ³  ν•΄λ³΄μž. μƒˆμ™€ μ‚¬μžλŠ” 동물에 μ†ν•˜λ―€λ‘œ λ™λ¬Όμ˜ 속성을 κ°–λ˜, 각자 μžμ‹ λ§Œμ˜ κ³ μœ ν•œ 속성도 κ°–λŠ”λ‹€. μ΄λ•Œ Animal ν΄λž˜μŠ€λŠ” λ™λ¬Όμ˜ 속성을 ν‘œ..
[JavaScript] ν΄λž˜μŠ€μ™€ ν”„λ‘œνΌν‹°
Β·
πŸ“šSTUDY/JavaScript
μΈμŠ€ν„΄μŠ€ ν”„λ‘œνΌν‹°μΈμŠ€ν„΄μŠ€ ν”„λ‘œνΌν‹°λŠ” constructor λ‚΄λΆ€μ—μ„œ μ •μ˜ν•΄μ•Ό ν•œλ‹€.class Person { constructor(name) { // μΈμŠ€ν„΄μŠ€ ν”„λ‘œνΌν‹° this.name = name; }}const me = new Person('Jung');console.log(me); // Person {name: "Jung"}constructor λ‚΄λΆ€ μ½”λ“œκ°€ μ‹€ν–‰λ˜κΈ° 이전에 constructor λ‚΄λΆ€μ˜ thisμ—λŠ” 이미 ν΄λž˜μŠ€κ°€ μ•”λ¬΅μ μœΌλ‘œ μƒμ„±ν•œ μΈμŠ€ν„΄μŠ€μΈ 빈 객체가 λ°”μΈλ”©λ˜μ–΄ μžˆλ‹€.μƒμ„±μž ν•¨μˆ˜μ—μ„œ μƒμ„±μž ν•¨μˆ˜κ°€ 생성할 μΈμŠ€ν„΄μŠ€μ˜ ν”„λ‘œνΌν‹°λ₯Ό μ •μ˜ν•˜λŠ” 것과 λ§ˆμ°¬κ°€μ§€λ‘œ, constructor λ‚΄λΆ€μ—μ„œ this에 μΈμŠ€ν„΄μŠ€ ν”„λ‘œνΌν‹°λ₯Ό μΆ”κ°€ν•œλ‹€. 이둜써 ν΄λž˜μŠ€κ°€ μ•”λ¬΅μ μœΌλ‘œ μƒμ„±ν•œ 빈 객체인 μΈμŠ€ν„΄..
[JavaScript] ν΄λž˜μŠ€μ™€ λ©”μ„œλ“œ
Β·
πŸ“šSTUDY/JavaScript
클래슀 λͺΈμ²΄μ— μ •μ˜ν•  수 μžˆλŠ” λ©”μ„œλ“œλŠ” constructor(μƒμ„±μž), ν”„λ‘œν† νƒ€μž… λ©”μ„œλ“œ, 정적 λ©”μ„œλ“œμ˜ μ„Έ κ°€μ§€κ°€ μžˆλ‹€.constructorconstructorλŠ” μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜κ³  μ΄ˆκΈ°ν™”ν•˜κΈ° μœ„ν•œ νŠΉμˆ˜ν•œ λ©”μ„œλ“œλ‹€. constructor의 이름은 λ³€κ²½ν•  수 μ—†λ‹€.class Person { constructor(name) { this.name = name; // μΈμŠ€ν„΄μŠ€ 생성 및 μ΄ˆκΈ°ν™” }}개발자 λ„κ΅¬μ˜ μ½˜μ†”μ—μ„œ console.dir을 톡해 클래슀의 λ‚΄λΆ€λ₯Ό μ‚΄νŽ΄λ³΄λ©΄ μ•„λž˜μ™€ κ°™λ‹€.ν΄λž˜μŠ€λŠ” ν‰κ°€λ˜μ–΄ ν•¨μˆ˜ 객체가 λ˜λ―€λ‘œ, ν΄λž˜μŠ€λ„ ν•¨μˆ˜ 객체 고유의 ν”„λ‘œνΌν‹°λ₯Ό λͺ¨λ‘ κ°–κ³  μžˆλ‹€. ν•¨μˆ˜μ™€ λ™μΌν•˜κ²Œ ν”„λ‘œν† νƒ€μž…κ³Ό μ—°κ²°λ˜μ–΄ 있고, μžμ‹ μ˜ μŠ€μ½”ν”„ 체인을 κ΅¬μ„±ν•œλ‹€. λͺ¨λ“  ν•¨μˆ˜ 객체가 κ°€μ§€κ³  μžˆλŠ” prototype ..
[JavaScript] 클래슀
Β·
πŸ“šSTUDY/JavaScript
ν΄λž˜μŠ€λŠ” ν”„λ‘œν† νƒ€μž…μ˜ 문법적 섀탕인가?μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” ν”„λ‘œν† νƒ€μž… 기반 객체지ν–₯ μ–Έμ–΄λ‘œ, ν΄λž˜μŠ€κ°€ ν•„μš” μ—†λŠ” 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ‹€. ES5μ—μ„œλŠ” 클래슀 없이도 μƒμ„±μž ν•¨μˆ˜μ™€ ν”„λ‘œν† νƒ€μž…μ„ 톡해 객체지ν–₯ μ–Έμ–΄μ˜ 상속을 κ΅¬ν˜„ν•  수 μžˆλ‹€.var Person = (function () { function Person(name) { this.name = name; } Person.prototype.sayHi = function () { console.log('Hi! My name is ' + this.name); }; return Person();}());var me = new Person('Jung');me.sayHi(); // Hi! My Name is Jungν•˜μ§€λ§Œ 클래슀 기반 μ–Έ..
[JavaScript] ν΄λ‘œμ €μ˜ ν™œμš©
Β·
πŸ“šSTUDY/JavaScript
ν΄λ‘œμ €μ˜ ν™œμš©ν΄λ‘œμ €λŠ” μƒνƒœλ₯Ό μ•ˆμ „ν•˜κ²Œ λ³€κ²½ν•˜κ³  μœ μ§€ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•œλ‹€. 즉, μƒνƒœκ°€ μ˜λ„μΉ˜ μ•Šκ²Œ λ³€κ²½λ˜μ§€ μ•Šλ„λ‘ μƒνƒœλ₯Ό μ•ˆμ „ν•˜κ²Œ μ€λ‹‰ν•˜κ³  νŠΉμ • ν•¨μˆ˜μ—κ²Œλ§Œ μƒνƒœ 변경을 ν—ˆμš©ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•œλ‹€.μΉ΄μš΄ν„° μ˜ˆμ œν•¨μˆ˜κ°€ 호좜될 λ•Œλ§ˆλ‹€ 호좜된 횟수λ₯Ό λˆ„μ ν•˜μ—¬ 좜λ ₯ν•˜λŠ” μΉ΄μš΄ν„° 예제λ₯Ό μ‚΄νŽ΄λ³΄μž. ν•΄λ‹Ή μ˜ˆμ œμ—μ„œ μ•ˆμ „ν•˜κ²Œ λ³€κ²½ν•˜κ³  μœ μ§€ν•΄μ•Ό ν•  μƒνƒœλŠ” 호좜된 횟수(num λ³€μˆ˜)κ°€ λœλ‹€.μƒνƒœλ₯Ό μ „μ—­ λ³€μˆ˜λ‘œ 관리let num = 0;const increase = function () { return ++num;};console.log(increase()); // 1console.log(increase()); // 2console.log(increase()); // 3μœ„ μ½”λ“œλŠ” μ •μƒμ μœΌλ‘œ μž‘λ™ν•˜μ§€λ§Œ, 카운트 μƒνƒœκ°€ μ „μ—­ λ³€μˆ˜λ₯Ό 톡..
[JavaScript] ν΄λ‘œμ €
Β·
πŸ“šSTUDY/JavaScript
ν΄λ‘œμ €λž€?ν΄λ‘œμ €λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ 고유의 κ°œλ…μ΄ μ•„λ‹Œ ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄(ex. ν•˜μŠ€μΌˆ, λ¦¬μŠ€ν”„, μ–Όλž­, 슀칼라 λ“±)μ—μ„œ μ‚¬μš©λ˜λŠ” μ€‘μš”ν•œ νŠΉμ„±μ΄λ‹€. λ”°λΌμ„œ ν΄λ‘œμ €μ— λŒ€ν•œ μ •μ˜κ°€ ECMAScript μ‚¬μ–‘μ—λŠ” λ“±μž₯ν•˜μ§€ μ•ŠμœΌλ©°, MDNμ—μ„œ λ‹€μŒκ³Ό 같이 μ •μ˜ν•˜κ³  μžˆλ‹€. A closure is the combination of a function and the lexical environment within which that function was declared'ν΄λ‘œμ €λŠ” ν•¨μˆ˜μ™€ κ·Έ ν•¨μˆ˜κ°€ μ •μ˜λœ λ ‰μ‹œμ»¬ ν™˜κ²½κ³Όμ˜ 쑰합이닀'λΌλŠ” 의미인데, 예제λ₯Ό 톡해 μ•Œμ•„κ°€λ³΄μž.const x = 1;function outerFunc() { const x = 10; function innerFunc() { console...
[TypeScript] μΈν„°νŽ˜μ΄μŠ€
Β·
πŸ“šSTUDY/TypeScript
μΈν„°νŽ˜μ΄μŠ€λž€?μΈν„°νŽ˜μ΄μŠ€λž€ μƒν˜Έ 간에 μ•½μ†λœ κ·œμΉ™μ„ μ˜λ―Έν•˜λ©°, νƒ€μž… 별칭과 λ™μΌν•˜κ²Œ νƒ€μž…μ˜ 이름을 μ§€μ–΄μ£ΌλŠ” 문법이닀. μ•„λž˜μ™€ 같이 νƒ€μž… 별칭과 μΈν„°νŽ˜μ΄μŠ€λŠ” 맀우 μœ μ‚¬ν•˜κ²Œ 생겼닀. λ‹€λ§Œ, νƒ€μž… 별칭과 λ‹€λ₯΄κ²Œ μΈν„°νŽ˜μ΄μŠ€λŠ” 객체의 ꡬ쑰λ₯Ό μ •μ˜ν•˜λŠ”λ° νŠΉν™”λœ λ¬Έλ²•μœΌλ‘œ, 상속, ν•©μΉ¨ λ“±μ˜ νŠΉμˆ˜ν•œ κΈ°λŠ₯을 μ œκ³΅ν•œλ‹€. 선택적 ν”„λ‘œνΌν‹°μ™€ 읽기 μ „μš© ν”„λ‘œνΌν‹°μΈν„°νŽ˜μ΄μŠ€μ—μ„œλ„ νƒ€μž… 별칭과 같은 λ°©λ²•μœΌλ‘œ 선택적 ν”„λ‘œνΌν‹°μ™€ 읽기 μ „μš© ν”„λ‘œνΌν‹°λ₯Ό μ •μ˜ν•  수 μžˆλ‹€.interface Person { readonly name: string; age?: number;}const person: Person = { name: "은경",};person.name = "길동" // βŒλ©”μ„œλ“œ νƒ€μž… μ •μ˜ν•˜κΈ°λ©”μ„œλ“œμ˜ νƒ€μž…μ„ μ •μ˜ν•  λ•ŒλŠ” ν•¨μˆ˜ νƒ€μž… ..
[TypeScript] ν•¨μˆ˜μ™€ νƒ€μž…
Β·
πŸ“šSTUDY/TypeScript
ν•¨μˆ˜ νƒ€μž…ν•¨μˆ˜ νƒ€μž…μ„ μ •μ˜ν•œλ‹€λŠ” 것은 μ–΄λ–€ νƒ€μž…μ˜ λ§€κ°œλ³€μˆ˜λ₯Ό λ°›κ³ , μ–΄λ–€ νƒ€μž…μ˜ 결과값을 λ°˜ν™˜ν•˜λŠ” μ§€λ₯Ό μ •μ˜ν•˜λŠ” 것이닀. νƒ€μž…μŠ€ν¬λ¦½νŠΈμ—μ„œ 일반적인 ν•¨μˆ˜ μ„ μ–Έλ¬Έμ˜ νƒ€μž…μ„ μ •μ˜ν•˜λŠ” 방법은 μ•„λž˜μ™€ κ°™λ‹€.function func(a: number, b: number): number { return a + b;}νƒ€μž…μŠ€ν¬λ¦½νŠΈλŠ” λ°˜ν™˜λ¬Έμ„ κΈ°μ€€μœΌλ‘œ λ°˜ν™˜κ°’μ˜ νƒ€μž…μ„ μžλ™ μΆ”λ‘ ν•  수 있기 λ•Œλ¬Έμ— λ°˜ν™˜κ°’ νƒ€μž…μ„ μƒλž΅ν•  수 μžˆλ‹€.function func(a: number, b: number) { return a + b;} ν™”μ‚΄ν‘œ ν•¨μˆ˜ νƒ€μž… μ •μ˜ν™”μ‚΄ν‘œ ν•¨μˆ˜μ˜ νƒ€μž…μ„ μ •μ˜ν•˜λŠ” 방법은 μ•„λž˜μ™€ κ°™λ‹€. λ§ˆμ°¬κ°€μ§€λ‘œ λ°˜ν™˜κ°’μ˜ νƒ€μž…μ€ μžλ™μœΌλ‘œ μΆ”λ‘  κ°€λŠ₯ν•˜λ‹€.const func = (a: number, b: number): number ..
[TypeScript] μ„œλ‘œμ†Œ μœ λ‹ˆμ˜¨ νƒ€μž… (Tagged Union)
Β·
πŸ“šSTUDY/TypeScript
μ„œλ‘œμ†Œ μœ λ‹ˆμ˜¨ νƒ€μž…μ„œλ‘œμ†Œ μœ λ‹ˆμ˜¨ νƒ€μž…μ΄λž€?μ„œλ‘œμ†Œ μœ λ‹ˆμ˜¨ νƒ€μž…μ€ ꡐ집합이 μ—†λŠ” νƒ€μž…λ“€λ‘œλ§Œ λ§Œλ“  μœ λ‹ˆμ˜¨ νƒ€μž…μ„ μ˜λ―Έν•œλ‹€. 예λ₯Ό λ“€μ–΄ stringκ³Ό number νƒ€μž…μœΌλ‘œ μœ λ‹ˆμ˜¨ νƒ€μž…μ„ λ§Œλ“€λ©΄, μ΄λŠ” μ„œλ‘œμ†Œ μœ λ‹ˆμ˜¨ νƒ€μž…μ΄ λœλ‹€.type A = { tag: "A";}type B = { tag: "B";}type Union = A | B; // μ„œλ‘œμ†Œ μœ λ‹ˆμ˜¨ νƒ€μž…κ°μ²΄ νƒ€μž…λ„ λ§ˆμ°¬κ°€μ§€λ‘œ A νƒ€μž…μ΄λ©΄μ„œ B νƒ€μž…μΈ κ°μ²΄λŠ” μ ˆλŒ€ μžˆμ„ 수 μ—†μœΌλ―€λ‘œ, A와 BλŠ” μ„œλ‘œ ꡐ집합이 μ—†λŠ” νƒ€μž…μ΄κ³ , λ”°λΌμ„œ A와 B νƒ€μž…μœΌλ‘œ λ§Œλ“  Union νƒ€μž…μ€ μ„œλ‘œμ†Œ μœ λ‹ˆμ˜¨ νƒ€μž…μ΄ λœλ‹€. 예제1 - νšŒμ› 관리 ν”„λ‘œκ·Έλž¨type Admin = { name: string; kickCount: number;};type Member = { nam..