Recent Posts
Recent Comments
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Today
Total
관리 메뉴

DH의 개발 공부로그

[TypeScript] 타입스크립트 클래스 - Classes 본문

TypeScript

[TypeScript] 타입스크립트 클래스 - Classes

DeveloperDH 2023. 2. 9. 22:00
728x90

TypeScript

클래스

타입스크립트는 자바스크립트 기반의 언어이기 때문에 자바스크립트에서와 마찬가지로 class를 선언하고 사용이 가능합니다.

class PlayerInfo {
}

접근제한자

타입 스크립트에서는 자바와 같이 클래스 기반 객체 지향 언어가 지원하는
접근 제한자 public, pivate, protected를 지원하며 의미 또한 동일합니다.

접근 구분 private protected publick
선언한 클래스 내
상속받은 클래스 내
인스턴스

 

class PlayerInfo {
  constructor(
    private firstName: string,
    private lastName: string,
    public nickName: string
  ) { }
  // 메서드도 보호 가능
  private getFullName() {
    return this.firstName + this.lastName
  }
}

// js로 변환 시 코드
class PlayerInfo {
  constructor(firstName, lastName, nickName) {
    this.firstName = firstName;
    this.lastName = lastName;
    this.nickName = nickName;
  }
  getFullName() {
    return this.firstName + this.lastName
  }
}

// 인스턴스
const jack = new PlayerInfo('jack', 'miled', '짹')
console.log(jack.nickName)

추상 클래스 (Abstract Class)

추상 클래스는 오직 다른 클래스가 상속받을 수 있는 클래스입니다.
그리고 추상 클래스는 직접 새로운 인스턴스를 만들 수는 없다.

abstract class User {
  constructor(
    private firstName: string,
    private lastName: string,
    protected nickName: string
  ) { }
  // 메서드
  getFullName1() {
    return this.firstName + this.lastName
  }

추상 메서드

구현이 되어있지 않은 (코드가 없는) 메서드로, 오로지 call signature만을 가집니다.
따라서 추상클래스를 상속받은 곳에서 추상 메서드를 구현해 주어야합니다.

abstract class User {
  constructor(
    private firstName: string,
    private lastName: string,
    protected nickName: string
  ) { }
  abstract getNickName(): void // 추상 메서드
}

class UserInfo extends User {
  // 추상 클래스를 상속받은 곳에서 추상 메서드 구현
  getNickName() {
    console.log(this.nickName)
  }
}

readonly 사용하기

class에서 속성에 readonly를 사용이 가능합니다.
값을 보여주고, 불러올수는 있지만 수정은 불가능하게 하고 싶을 때 사용을 하면 됩니다.

class ReadWord {
  constructor(
    // 값을 보여주고, 불러올수는 있지만 수정은 불가능하게 하고 싶을 때
    public readonly term: string,
    public readonly def: string
  ) { }
}

타입으로 사용하기

타입스크립트의 클래스는 타입으로도 사용이 가능합니다.

type Words = {
  [key : string] : string
  // [key : string] -> 객체의 property에 대해 모르지만 타입만을 알 때 사용
}

class Dict {
  private words : Words
  constructor() {
    this.words = {}
  }
  add(word : Word) { // word는 Word 클래스의 인스턴스 타입.
    if (this.words[word.term] === undefined) {
      console.log(`add ${word.term}`)
      this.words[word.term] = word.def
    }
  }
}

class Word {
  constructor(
    public term : string,
    public def : string
  ) {}
}

참고

노마드 코더
TypeScript - classes
웹 프로그래밍 튜토리얼 | TypeScript - Class

728x90
Comments