typescript, javascript compile, 개인 및 공용 Access, readOnly

cptkuk91·2022년 12월 15일
1

TypeScript

목록 보기
7/13
post-thumbnail
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 출력

개인 및 공용 Access

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를 설정해 사용할 수 있다.


읽기 전용 (readonly)

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에서는 추가할 수 없다.

요약

  1. typescript에서 class는 Javascript 객체에 대한 청사진입니다.

  2. class 속성이란 class의 변수를 의미합니다.

  3. private 속성은 "class 밖에서 접근할 수 없는 것" 입니다.

profile
메일은 매일 확인하고 있습니다. 궁금하신 부분이나 틀린 부분에 대한 지적사항이 있으시다면 언제든 편하게 연락 부탁드려요 :)

0개의 댓글