타입스크립트 - 클래스 및 객체

wltjd1688·2025년 4월 4일

풀사이클

목록 보기
47/74

객체 리터럴

'male' | 'female';
근데 상속받으면 못씀
그때는 다시 리터럴 써줘야함

리터럴 타입은 특정 값을 나타내는 타입으로 해당 값이 정확하게 일치해야한다. 타입스크립트에서 사용되는 리터럴 타입에는 다양한 종류가 있다.

  • 문자 리터럴
let status : 'success' | 'error';
status = 'success'; // 유효
status = 'pending'; // 에러
  • 숫자 리터럴
let speed: 50 | 100 | 200 ;
speed = 100; // 유효
speed = 150; // 에러
  • 블리언 리터럴
let isTrue: true;
isTrue = true; // 유효
isTrue = false; //에러
  • 객체 리터럴
let person: {name:'John', age: 30};
person = { name: 'John', age: 30}; // 유효
person = { name: 'Alice', age: 25}; // 에러
  • 타입 별칭
type cardinalDirection = 'North'|'East'|'South'|'West';
let directio: cardinalDirection;
direction = 'North'; // 유효
direction = 'Northeast'; // 에러

리터럴 타입을 사용하면 좋은 점

  • 코드의 가독성을 높여줌
  • 잘못된 값이 들어오는 것을 방지할 수 있음.

유니온, 타입 별칭, 타입가드

any 타입

  • 타입 스크립트는 타입에 관한 정보가 더 많을수록 더 좋다.
  • 타입 정보는 개발자의 의도를 명확하게 전달할 수 잇다.
  • 효과적인 코드의 유지보수가 가능하다.
  • any타입을 일부러 사용하지는 말자.
  • 타입을 지정할 수 없는 제한적인 경우에만 any타입을 사용하자.

유니온 타입

  • 제한된 타입을 동시에 지정하고 싶을 때가 있다.
    let anyValue: number | string;
  • |기호를 사이에 두고 동시에 타입을 지정할 수 있다.
  • anyVal 변수는 number나 string타입 중 아무 타입의 값이 올 수 있다.

요약

  • any타입: 타입 체크를 하지 않는다. 어떤 타입이 오더라도 괜찮다.
  • 유니온 타입: 제한된 타입을 파이프라인으로 구분하여 동시에 지정
  • 타입 알리아스: 반복되는 코드를 재사용 한다.
  • 타입 가드: typeof 연산자를 이용하여 타입 검증을 수행한다.

Array와 Tuple의 차이점

  • array는 길이가 가변적이며 동일한 타입으로 요소를 구성
  • Tuple은 길이가 고정적이며 각 요소의 타입이 정해져있다.

클래스와 객체 만들기

타입스크립트 기반의 oop는
구조체, 공용체, 열거형, 인터페이스, 클래스등이 있다.
연관된 변수와 함수들을 한 덩어리로 묶음

클래스와 객체에서
클래스는 객체의 뼈대, 그래서 클래스는 셀계도, 생상틀로 생각하면 좋다.
그러면 객체는 이 클래스의 실체가 되는 것이다.
클래스가 붕어빵 틀이라면 객체가 붕어빵인것이다.

생성자

let employee1 = new Employee('kim',20,'개발자');

접근 지정자

class Employee {
    
    constructor(
        private _empName:string,
        private _age:number, 
        private _empJob:string
    ){
        
    }
...

getter와 setter

class Employee {
    
    constructor(
        private _empName:string,
        private _age:number, 
        private _empJob:string
    ){
        
    }

    // get/set
    get empName(){
        return this._empName;
    }

    set empName(val : string){
        this._empName = val;
    }

    printEmp = (): void => {
        console.log(`${this._empName}의 나이는 ${this._age}이고 직업은 ${this._empJob}입니다.`);
    }
}


let employee1 = new Employee('kim',20,'개발자');
employee1.empName = 'lee';
employee1.printEmp();
profile
일단 해!!!!

0개의 댓글