TIL - 타입스크립트 객체와 클래스

MinWoo Park·2021년 2월 8일
0

TIL

목록 보기
4/49
post-thumbnail

Today I Learned

매일 배운 것을 정리하며 기록합니다. TypeScript 객체와 클래스에 대해 공부했습니다.


클래스 선언문

  • ex)
class 클래스명 {
  [private | protected | pubilc] 속성이름[?]: 속성 타입[...]
  }

class Person1 {
  name: string
  age?: number
}

접근 제한자 (access modifier)

  • 클래스의 속성은 public, private, protect와 같은 접근 제한자를 이름 앞에 붙일 수 있음.

  • 생략 시 public으로 간주

  • 접근 제한자가 붙은 매겨변수의 이름을 가진 속성이 클래스에 선언된 것처럼 동작

  • ex)


인터페이스 구현

  • 다른 객체지향 언어와 마찬가지로 타입스크립트 클래스는 인터페이스를 구현할 수 있음.
  • 클래스가 인터페이스 구현할 때는 implements 키워드를 사용
  • 어떤 속성이 있어야 한다는 규약(spec)에 불과
  • 클래스 몸통에 반드시 인터페이스가 정의하고 있는 속성을 멤버 속성으로 포함해야 함.
  • ex)
class 클래스명 implements 인터페이스 이름 {
  ...
}
interface IPerson4 {
    name: string
    age?: number
}

class Person4 implements IPerson4 {
    constructor(public name:string, public age?: number) {}
}

let jack4: IPerson4 = new Person4('Jack', 32)
console.log(jack4) // Person4 { name: 'Jack', age: 32 }
  

추상 클래스

  • class 키워드 혹은 자신의 속성이나 메서드 앞에 abstract를 붙여 상속하는 다른 클래스에서 구현
  • ex)
abstract class 클래스명 {
  abstract 속성 이름: 속성 타입
  abstract 메서드 이름() {}
}
abstract class AbstractPerson5 {
  abstract name: string
  constructor(publice age?: number){}
}

클래스의 상속

  • extends 키워드를 통해 부모 클래스를 상속 받음
  • ex)
class 상속 클래스 extends 부모 클래스 { ... }
class Person5 extends AbstractPerson5 {
    // class Person5 extends APerson5 {
    constructor(public name:string, age?: number) {
        super(age) 
    }
}
let jack5 : Person5 = new Person5('Jack',32)
console.log(jack5)

static 속성

  • 클래스의 인스턴스 없이 호출이 가능함 즉, 정적 속성을 가질 수 있음
  • ex)
class 클래스 이름 {
  static 정적 속성 이름: 속성 타입
}
class A {
    static initValue = 1
}

let initVal = A.initValue // 1

타입 단언 (type assertion)

  • 특정 타입의 변숫값을 다른 타입의 값으로 변환
  • 자바스크립트의 타입 변환 구문과 구분하기 위해 타입 단언이라는 용어 사용
  • ex)
    1.(<타입> 객체)
    2.(객체 as 타입)
    두 가지 구문의 결과는 같음.
interface INameable {
    name: string
};

let obj: object = {name: 'Jack'}

let name1 = (<INameable>obj).name
let name2 = (obj as INameable).name
console.log(name1, name2) 


Reference : 전예홍, 『Do it! 타입스크립트 프로그래밍』, 이지스퍼블리싱(2020), p66-77.

profile
물음표를 느낌표로 바꾸는 순간을 사랑하는 개발자입니다.

0개의 댓글