#1 Language π/1-3 Typescript
[Typescript] ν΄λμ€ & μΈν°νμ΄μ€
FillByCoding
2023. 12. 23. 16:27
private : μμ±λ κ°μ²΄ λ΄λΆμμλ§ μ κ·Ό κ°λ₯ν μμ±
protected : privateκ³Ό λΉμ·νμ§λ§ privateκ³Ό λ€λ₯Έ μ μ μ΄ ν΄λμ€μμλΏ μλλΌ μ΄ ν΄λμ€λ₯Ό νμ₯νλ λͺ¨λ ν΄λμ€μμλ μ¬μ© κ°λ₯ ν¨
readonly ν€μλ
- μ΄κΈ°ν μ€μ ν λ²λ§ μ¬μ© κ°λ₯
- νΉμ μμ±μ΄ μ΄κΈ°ν λκ³ λλ©΄ μ΄νμλ λ³κ²½λμ΄μλ μλ¨
- μΆκ°μ μΈ νμ μμ μ±μ λν΄μ£Όκ³ μλλ₯Ό λͺ ννκ² ν΄μ€
- μ½μ μ΄κΈ°ν
// μ΄κΈ°ν μ½μ μ
class Department {
private id: string;
private name: string;
private employees: string[] = [];
constructor(id: string, name: string) {
this.id = n;
this.name = n;
}
}
// μ΄κΈ°ν μ½μ ν
class Department {
private employees: string[] = [];
constructor(private readonly id: string, public name: string) {
}
}
// μ΄κΈ°ν μ½μ μ
class Product {
title: string;
price: number;
private isListed: boolean;
constructor(name: string, pr: number) {
this.title = name;
this.price = pr;
this.isListed = true;
}
}
// μ΄κΈ°ν μ½μ ν
class Product {
private isListed: boolean;
constructor(public title: string, public price: number) {
this.isListed = true;
}
}
this ν€μλ
- this ν€μλλ₯Ό μ¬μ©νμ¬ λ¬΄μΈκ°λ₯Ό μ¬μ©νλ κ²½μ° superλ₯Ό λ¨Όμ νΈμΆν΄μΌ ν¨
getter / setter
- λ‘μ§μ μΊ‘μννκ³ μμ±μ μ½κ±°λ μ€μ νλ € ν λ
- μ€νλμ΄μΌ νλ μΆκ°μ μΈ λ‘μ§μ μΆκ°νλλ° μ μ©ν¨
μ μ λ©μλ & μμ±
- μ μ λ©μλ: ν΄λμ€λ₯Ό κΈ°λ°μΌλ‘ μμ±λ κ°μ²΄κ° μλλΌ ν΄λμ€μμ μ§μ νΈμΆνλ λ©μλ
- μ μ μμ±κ³Ό λ©μλλ₯Ό μ¬μ©νμ¬ ν΄λμ€μ μΈμ€ν΄μ€μμ μ κ·Όν μ μλ
- μμ±κ³Ό λ©μλλ₯Ό ν΄λμ€μ μΆκ°ν μ μμ
- ν΄λμ€ μ΄λ¦μ λ¨Όμ νΈμΆνμ§ μκ³ ν΄λμ€μ μ§μ μ κ·Ό
- μ£Όλ‘ λ Όλ¦¬μ μΌλ‘ κ·Έλ£Ήννκ±°λ ν΄λμ€μ λ§€ννλ €λ μ νΈλ¦¬ν° ν¨μλ
- ν΄λμ€μ μ μ₯νκ³ μ νλ μ μ μμμ μ¬μ© λ¨
- λ©μλ μμ static ν€μλ€λ₯Ό μΆκ°ν΄ λ€μ κ°μ²΄λ₯Ό λ°ν
static createEmployee(name: string) {
return { name: name };
}
const employee1 = Department.createEmployee("Yumi");
console.log(employee1);
- μ μ μμ±μ μΈμ€ν΄μ€μμ μ ν¨νμ§ μμ
- μ μ μμ±κ³Ό μ μ λ©μλμ μ 체μ μΈ κ°λ μ μΈμ€ν΄μ€μ λΆλ¦¬λμ΄ μκΈ° λλ¬Έ
- κ·Έλμ this ν€μλλ₯Ό μ¬μ©ν΄ μ κ·Όνλ 건 λΆκ°λ₯
μΆμ ν΄λμ€
- μΆμ ν΄λμ€ : μΈμ€ν΄μ€νλ μ μκ³ νμ₯λμ΄μΌ νλ ν΄λμ€
- λ©μλ μμ abstractκ° μλ λ©μλκ° νλ μ΄μμ΄λΌλ©΄
- ν΄λΉ ν΄λμ€ μμλ abstractλ₯Ό μΆκ° ν΄μΌ ν¨
abstract class Department {
static fiscalYear = 2022;
// private id: string;
// private name: string;
protected employees: string[] = [];
constructor(protected readonly id: string, public name: string) {
// this.id = n;
// this.name = n;
}
abstract describe(this: Department): void;
}
- μΆμ ν΄λμ€λ μΌλΆ μμ ν΄λμ€λ₯Ό κΈ°λ°μΌλ‘ νλ λͺ¨λ ν΄λμ€κ°
- μΌλΆ κ³΅ν΅ λ©μλ λλ μμ±μ 곡μ νλ κ²½μ° μ¬μ©
- abstract ν€μλλ‘ νκΈ°λ ν΄λμ€λ€μ μ체μ μΌλ‘ μΈμ€ν΄μ€νν μ μμ
μ±κΈν€ & κ°μΈ μμ±μ
static getInstance() {
// μ΄λ―Έ μΈμ€ν΄μ€λ₯Ό κ°μ§κ³ μλ€λ©΄ μ΄λ₯Ό λ°ν
if (AccountingDepartment.instance){
return this.instance
} // κ·Έλ μ§ μμΌλ©΄ μ μΈμ€ν΄μ€λ₯Ό μμ±
this.instance = new AccountingDepartment('d2',[])
return this.instance
}
// AccountingDepartmentμ μ μΈμ€ν΄μ€κ° λ°ν
const accounting = AccountingDepartment.getInstance();
const accounting2 = AccountingDepartment.getInstance();
- μ±κΈν€ : “new”λ‘ μμ±νμ§ μκ³ λ©μλλ₯Ό νΈμΆνμ¬ κ΅¬μ±νλ―λ‘ νΉμ μμ μ λ°λμ
- λ¨ νλμ ν΄λμ€ μΈμ€ν΄μ€κ° μ‘΄μ¬
μΈν°νμ΄μ€
- κ°μ²΄μ ꡬ쑰λ₯Ό μ€λͺ ν¨
- ꡬ체μ μΈ κ°μ΄ μλ κ΅¬μ‘°λ§ μμ
interface Person {
name: string;
age: number;
greet(phrase: string): void;
}
- μΈμμ μ΄λ¦κ³Ό νμ , λ©μλμ λ°ν νμ μμ
interface Person {
name: string;
age: number;
greet(phrase: string): void;
}
let user1: Person;
user1 = {
name: "yum",
age: 20,
greet(phrase: string) {
console.log(phrase + "" + this.name);
},
};
user1.greet("Hi there - I am ");
- μΈν°νμ΄μ€ λ΄μ readonly μ μ΄μλ μΆκ° κ°λ₯
- νμ§λ§ public, private λ±μ μ§μ λΆκ°λ₯
- ν¨μμ ꡬ쑰λ₯Ό μ μνλλ°μλ μ¬μ© κ°λ₯
μ νμ λ§€κ°λ³μ & μμ±
interface Named {
readonly name?: string;
outputName?: string
}
ν΄λμ€, μΈν°νμ΄μ€ μ°¨μ΄μ
- μΈν°νμ΄μ€λ μΈμ€ν΄μ€νν μ μμΌλ©° μ»΄νμΌλμ§ μλ λ°λ©΄,
- ν΄λμ€λ μΈμ€ν΄μ€νν μ μμΌλ©° μ»΄νμΌ λ¨
LIST