[TypeScript] 클래스

Posted by 신희준 on October 30, 2017


타입스크립트 코리아 이웅재님의 강의 참조


2017 - 10 - 30 (월)

  • 클래스

  • 클래스

    클래스

    자바의 클래스와 아주 비슷한 개념이다.
    typescript 에서는 거의 class로 작업한다.

    class Person{
        protected _name: string =null;
        private _age: number =null;
        //name: string = 'shj'; 처럼 값을 할 당할 수 있다.
        /*
        private 접근제어자를 쓸경우 변수 네이밍 시 _를 붙인다.(기존에 쓰던 규칙?같은것)
    클래스는 DEFAULT 가 public 이다.
    클래스에 멤버변수가 정의되어있지만 값을 대입하지 않을 경우 undefined이다.
    */
        constructor(name: string) {
           //생성자
            this.name = name;
        }
    
        //getter/setter
    
        hello(): void{
            console.log(this._name);
        }
    }
    
    const person = new Person("shj");
    
    console.log(person);
    //console.log(person.name);
    
    
    //ex5 -> ex6 로 넘어오면서 class 를 많이 활용한다.
    // 기존에는 symbol처리를 했어야되는데 접근제어자가 생김
    
    class Child extends Person{
      /*  constructor(){
            super();
    
            this._name;
        }
        */
        _name: string = "shj1";
    }
    
    const person: Child = new Child();
    person.hello
    console.log(person);
    

    자바와 매우 비슷한 형태라고 생각든다.


    인스턴스 변수 생성 방법

    class Student{
      접근제어자 인스턴스변수명 : 타입
      접근제어자 인스턴스변수명 : 타입 = 
    }
    

    생성자

    class Student{
      접근제어자 인스턴스변수명 : 타입
      접근제어자 인스턴스변수명 : 타입 = 
      constructor(name: string) {
         //생성자
          this.인스턴스변수명 = 매개변수;
      }
    }
    

    메서드

    class Student{
      접근제어자 인스턴스변수명 : 타입
      접근제어자 인스턴스변수명 : 타입 = 
      메서드명(): 반환타입{
          console.log("반갑습니다.");
      }
    }
    

    객체 생성

    class Student{
      접근제어자 인스턴스변수명 : 타입
      접근제어자 인스턴스변수명 : 타입 = 
      constructor(name: string) {
         //생성자
          this.인스턴스변수명 = 매개변수;
      }
    }
    
    const 사용할객체이름 = new Student("shj");
    console.log(사용한객체이름.name) // shj 가 콘솔에 찍힘
    

    상속

    class Child extends 부모클래스명{
      /*  constructor(){
            super();
    
            this._name;
        }
        */
        _name: string = "shj1";
    }
    

    getter/setter : 접근제어자를 private 로 할경우 외부에서 접근 불가하므로 get / set 메서드 활용

    class Student {
        private _name: string;
        private _age: number;
        constructor(name: string, age: number) {
            this._name = name;
            this._age = age;
         }
        get name() {
            return this._name;
        }
        set name(name: string) {
            this._name = `${name}`;
        }
    }
    const student1: Student = new Student('shj', 26);
    const student2: Student = new Student('lhj', 26);
    const student3: Student = new Student('chj', 26);
    
    console.log(student1);
    console.log(student2);
    console.log(student3);
    

    추상클래스 : 자바처럼 완성되지 않은 클래스이다. abstract를 붙여준다/.

    abstract class AStudent {
        protected _name: string = 'Mark';
        abstract setName(name: string): void;
    }
    
    class Student extends AStudent {
        setName(name: string): void {
            this._name = name;
        }
    }
    // const student1 = new AStudent(); 추상클래스의 객체 생성은 불가
    const student1 = new Student();