타입스크립트 클래스 - 1

hb-developer·2021년 4월 27일
0

TypeScript

목록 보기
5/6

클래스

ES6와 마찬가지로 타입스크립트에서도 클래스를 지원합니다.

class Person {
  name;
  constructor(name: string){
     this.name = name;
  }
}
const user1 = new Person("Tim")
console.log(user1.name);        //Tim

클래스는 생성자함수 없이 사용 할수도 있습니다.

class Person {
name:string ="Tim"
age:number;        // 오류 발생
}

const user1 = new Person();
user1.age= 5;

클래스 안에는 값을 할당해야합니다.

하지만 클래스 내부에는 이름만 외부에 값을 선언하고 싶을때에는

tsconfig 에서 strict 모드를 끄거나 :앞에 !표를 붙여줍니다. age!:number;

class Person {
name:string ="Tim"
age!:number;
}

const user1 = new Person();
user1.age= 5;

console.log(user1); //  { name: 'Tim', age: 5 }

접근제한자

타입스크립트는 접근제한자 기능을 지원합니다.

접근 가능성publicprotectedprivate
클래스 내부
자식 클래스 내부
클래스 인스턴스

public

모든 클래스안의 속성들은 기본이 public 입니다. 외부에서 접근할수 있고 기본적으로 생략이 가능합니다.

class Person {
public name:string ="Tim"        // === name:string ="Tim"
public age!:number;              // === age!:number;
}

const user1 = new Person();
user1.age= 5;

private

private 을 사용하면 클래스 안에서만 접근이 가능합니다.

encapsulation(캡슐화) 즉 수정되거나 보여서 안되는 값들을 보호하게 됩니다.

생성자 함수 접근제한자

보통의 클래스 구조는 이러한 형태를 뜁니다.

class Person {
  name: string;
  age:number;
  constructor(name:string,age:number) {
    this.name = name
    this.age = age;
  }
}

위에서 선언을 하면 생성자 함수에서 초기화 하는 방식으로 말이죠

하지만 접근제한자를 생성자 함수의 매개변수로 사용하면 속성선언과 초기화를 암묵적으로 수행할수 있습니다.

class Person {
 
  constructor(public name:string,public age:number) {
  }
}

public 과 private 동일하게 사용할순 있지만 private을 사용하면 외부에선 접근이 불가능합니다.

profile
배우면 바뀐다

0개의 댓글