[TIL] 240508 - TypeScript(2)

jini·2024년 5월 8일
0

TIL

목록 보기
6/48

리터럴 타입


리터럴 타입은 특정 값을 나타내는 타입으로 해당 값이 정확하게 일치해야 함

문자열 리터럴 타입

let status: 'success' | 'error';
status = 'success'; // success
status = 'err'; // error

숫자 리터럴 타입

let speed: 10 | 20 | 30;
speed = 20; // success
speed = 15; // error

불리언 리터럴 타입

let isTrue: true;
isTrue = true; // success
isTrue = false; // error

객체 리터럴 타입

let person: { name: 'jini', age: 24 };
person: { name: 'jini', age: 24 }; // success
person: { name: 'jin', age: 26 }; // error

타입 별칭

type CardinalDirection = 'North' | 'East' | 'South' | 'West';
let direction: CardinalDirection;
direction = 'North'; // success
direction = 'Northeast'; // error



유니온 타입


제한된 타입을 동시에 지정하고 싶은 경우

let anyVal: number | string;

anyVal 변수는 number나 string 타입 중 아무 타입의 값이 올 수 있음

타입 별칭

type numOrStr = number | string;
let val: numOrStr = 100;



Array


숫자형 배열

let numbers: number[] = [1, 2, 3, 4, 5];

문자열 배열

let fruits: string[] = ['apple', 'banana', 'orange'];

여러 타입 배열

let mixedArray : (number | string)[] = [1, 'two', 3, 'four'];

읽기 전용 배열

let readOnlyArray: ReadonlyArray<number> = [1, 2, 3];

배열 순회

for(let i = 0; i < array.length; i++){
	console.log(array[i]);
}

Spread 연산자

let array1 = [1, 2];
let array2 = [3, 4];

let array = [...array1, ...array2];
console.log(array); // [1, 2, 3, 4]



Tuple


길이가 고정적이며 각 요소의 타입이 정해져 있음

let greeting: [number, string, boolean] = [1, 'hello', true];



Class, Object

Class 생성

class Student{
  name: string;
  age: number;

  printStd = (): void => {
    console.log(`name : ${this.name}, age : ${this.age}`);
  }
}
  • 멤버변수 == 속성 == 프로퍼티
  • 멤버함수 == 메소드

Object 생성

let std1 = new Student();
std1.empName = 'jini';
std1.age = 24;
std1.printStd(); // name : jini, age : 24

Constructor

class Student{
  ...
  constructor(name: string, age: number){
    this.name = name;
    this.age = age;
  ...
}
  
let std1 = new Student('jini', 24);
std1.printStd(); // name : jini, age : 24

만약 매개변수에 ?를 붙여주면 선택적 매개변수
ex. constructor(name: string, age?: number)


접근 지정자

  • public(default) : 누구나 접근 가능

  • private : 내 클래스 내부에서만 접근 가능하고, 외부에서는 절대 접근 불가능

  • protected : 상속 관계에 있을 때 상속 받은 자식 클래스에서 접근 가능, 그 외에는 접근 불가능

class Student{
  private _name: string;
  private _age: number;
  ...
}
  
let std1 = new Student('jini', 24);
std1.name = 'jin'; // error

private 변수명 앞에 _를 붙여야 함

class Student{

  constructor(
    private _name: string, 
    private _age: number
    ){
      
  }

  get _name(){
    return this._name;
  }

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

0개의 댓글