class Department {
name: string;
constructor(n: string){
this.name = n;
}
describe(){
// Department 내 name: string이 있기 때문에 name을 사용할 수 있다.
console.log("Department: " + name);
}
}
const accounting = new Department("Accounting");
accounting.descibe();
// Department: Accounting 출력
class Department {
name: string;
private employee: string[] = [];
constructor(n: string){
this.name = n;
}
// this: Department를 통해서 상속 받는다.
describe(this: Department){
// Department 내 name: string이 있기 때문에 name을 사용할 수 있다.
console.log("Department: " + name);
}
addEmployee(employee: string){
this.employee.push(employee);
}
printEmployeeInformation(){
console.log(this.employee.length);
console.log(this.employee);
}
}
const accounting = new Department("Accounting");
accounting.describe();
accounting.addEmployee("Max"); // ["Max"];
accounting.addEmployee("Mana"); // ["Max", "Mana"];
// 아래와 같은 방법을 막아버릴 수 있는 방법이 있습니다.
// addEmployee를 통해서만 배열에 키워드 추가하기
accounting.employee[2] = "Anna"; // ["Max", "Mana", "Anna"];
Department employee: string[] = [];
위 코드에서 private employee로 변경할 경우 accounting.employee[2]는 막힌다.
따라서 addEmployee를 통해서만 배열에 키워드를 추가할 수 있다.
class Department{
// id: string;
// name: string;
constructor(private id: string, public name: string){
// this.id = id;
// this.name = name;
}
}
Department에서 type설정이 아닌, constructor에서 type를 설정해 사용할 수 있다.
class Department{
// id: string;
// name: string;
constructor(private readonly id: string, public name: string){
// this.id = id;
// this.name = name;
}
}
addEmployee(employee: string){
this.id = "d2";
}
constructor에서 id값을 readonly로 설정해둔 상태다. 따라서 addEmployee에서 this.id를 통해 d2를 추가하고 싶어도 readonly에서는 추가할 수 없다.
typescript에서 class는 Javascript 객체에 대한 청사진입니다.
class 속성이란 class의 변수를 의미합니다.
private 속성은 "class 밖에서 접근할 수 없는 것" 입니다.