
let studentA = { name: 'army', age: 2, grade: 'A+' };
let studentB = { name: 'tan', age: 3, grade: 'B+' };
π μ΄λ κ² κ³μ λ§λ€λ©΄?
π "ν(μ€κ³λ)"μ λ§λ€μ΄μ κ°μ²΄λ₯Ό μ°μ΄λ΄κΈ°
class Student {}
π μ΄κ±΄ βνμμ λ§λλ κΈ°κ³βλΌκ³ μκ°νλ©΄ μ¬μ
class Character {
name;
level;
job;
constructor(name, level, job) {
this.name = name;
this.level = level;
this.job = job;
}
attack() {
console.log(`${this.name} 곡격!`);
}
introduce() {
console.log(`λλ ${this.job} ${this.name}`);
}
}
let characterA = {
name: 'Hero',
level: 1,
job: 'Warrior',
attack() {
console.log('곡격!');
},
};
let characterB = {
name: 'Mage',
level: 1,
job: 'Wizard',
attack() {
console.log('λ§λ² 곡격!');
},
};
π λ°λ³΅λ¨ π’
name;
level;
job;
π κ°μ²΄κ° κ°μ§ λ°μ΄ν°
constructor(name, level, job)
π κ°μ²΄ λ§λ€ λ μλ μ€νλ¨ (κ°μ²΄ μμ± μ κ° μΈν )
new Character('Hero', 1, 'Warrior');
π μ΄ μκ° constructor μ€νλ¨
this.name = name;
π "μ§κΈ λ§λ€μ΄μ§κ³ μλ κ°μ²΄"
let char1 = new Character('Hero', 1, 'Warrior');
classλ‘ λ§λ κ°μ²΄
π κ²°κ³Ό:
{
name: 'Hero',
level: 2,
job: 'Warrior'
}
π μ΄κ±Έ μΈμ€ν΄μ€(instance)λΌκ³ λΆλ¦
π κΈ°λ₯ μ¬μ¬μ© + νμ₯
π "κΈ°μ‘΄ ν΄λμ€ κΈ°λ₯ κ·Έλλ‘ κ°μ Έμ€κ³ + μΆκ°"
class MageCharacter extends Character {
mana;
constructor(name, level, job, mana) {
super(name, level, job); // λΆλͺ¨ νΈμΆ
this.mana = mana;
}
castSpell() {
console.log(`${this.name}κ° λ§λ² μ¬μ©!`);
}
}
let mage = new MageCharacter('Gandalf', 10, 'Wizard', 100);
mage.attack(); // λΆλͺ¨ λ©μλ
mage.castSpell(); // μμ λ©μλ
π λΆλͺ¨ ν΄λμ€ μμ
super(name, level, job);
π λΆλͺ¨ constructor νΈμΆ
π β μμμμλ λ°λμ μ¨μΌ ν¨
β οΈ μ€μν μ€μ ν¬μΈνΈ
super(name, job, level);
π β μμ νλ¦Ό
π λΆλͺ¨λ name, level, job)
name;
name: string;
π νμ μ λͺ ννκ² μ§μ
class Character {
name;
level;
job;
π TypeScript ν΄λμ€λ "νμ μν λ κ°λ₯"
const charA: Character= {
name: '',
level:2
job: '',
};
π ν΄λμ€ = νμ μ²λΌ μ¬μ© κ°λ₯
| ν€μλ | μλ―Έ |
|---|---|
| public | λꡬλ μ κ·Ό κ°λ₯ |
| private | ν΄λμ€ λ΄λΆλ§ κ°λ₯ |
| protected | μμ ν΄λμ€κΉμ§ κ°λ₯ |
class Character {
private name: string;
protected level: number;
job: string;
constructor(name: string, level: number, job: string) {
this.name = name;
this.level = level;
this.job = job;
}
}
const char = new Character('Hero', 1, 'Warrior');
char.name β
char.level β
char.job β
class Warrior extends Character {
showLevel() {
console.log(this.level); // β protected
// console.log(this.name); β private
}
}
π "μ΄ κ΅¬μ‘° λ°λμ λ°λΌ!"
interface GameCharacter {
name: string;
speed: number;
move(): void;
}
π μΈν°νμ΄μ€ κ·μΉ κ°μ
class Player implements GameCharacter {
constructor(
public name: string,
public speed: number,
private skill: string
) {}
move() {
console.log(`${this.speed} μλλ‘ μ΄λ`);
}
}
π λ°λμ λ€ κ΅¬νν΄μΌ ν¨
β μλμΌλ‘ νλ + this μμ±
constructor(public name: string, public speed: number, private skill: string)
π μ΄κ±° μ°λ©΄ μλμΌλ‘:
this.name = name;
this.moveSpeed = moveSpeed;
π β μμ² λ§μ΄ μ°μ
π ν΄λμ€ = κ°μ²΄ μ°μ΄λ΄λ 곡μ₯
π constructor = μ΄κΈ°κ° μΈν
π extends = λ³΅μ¬ + νμ₯
π super = λΆλͺ¨ νΈμΆ
π TSλ νμ
κΉμ§ κ΄λ¦¬