[엘리스 SW트랙 4기] 5주차 - Day 23 : 타입스크립트 기본 / Class

랸나·2023년 3월 29일
0
타입스크립트를 처음 배워본 날! 뭔가 알것 같으면서도.. 조금 여러번 보고 써봐야 익숙해질 것 같다. 

1. 타입스크립트 기본

1-1. 타입이 필요한 이유

  • 타입스크립트는 런타임 단계에서 발생하는 타입 에러를 컴파일 단계에서 미리 확인하고 고칠 수 있음.
  • 동적 타입 정적으로 선언 가능
  • 타입 유추를 통한 타입 제어 가능
  • 자바스크립트에서 찾을 수 없는 추가 코드 기능 제공

1-2. 타입스크립트 개요

타입스크립트의 기본 타입

기본 참조형(primitive type)

  • string
  • boolean
  • number : 부동 소수값 저장 (2진수, 8진수, 10진수, 16진수 사용 가능)
  • null
  • undefined
  • symbol

참조 자료형(reference type)

  • object
  • array
  • function

추가 자료형

  • tuple
  • enum
  • any
  • void
  • never

1-3. Utility types

  • 타입스크립트는 공통 타입 변환을 용이하게 하기 위해 유틸리티 타입을 제공.
  • 유틸리티 타입은 전역으로 사용 가능
  • Partial<T> : 프로퍼티를 선택적으로 만드는 타입을 구성, 주어진 타입의 모든 하위 타입 집합을 나타내는 타입을 반환.
  • Readonly<t> : 프로퍼티를 읽기 전용으로 설정한 타입을 구성함.
  • Record<t> : 프로퍼티의 집합K로 타입 구성함, 타입의 프로퍼티들을 다른 타입에 매핑시키는데 사용함.
  • Pick<T,K> : 프로퍼티 K의 집합을 선택해 타입을 구성한다.
  • Omit<T,K> : 모든 프로퍼티를 선택한 다음, K를 제거한 타입을 구성한다.
  • Exclue<T,U> : T에서 U에 할당할 수 있는 모든 속성을 제외한 타입을 구성
  • Extract<T,U> : T에서 U에 할당할 수 있는 모든 속성을 추출하여 타입을 구성.
  • NonNullable<T> : null과 undefined를 제외한 타입.
  • Parameters<T> : 합수타입 T의 매개변수 타입들의 튜플 타입을 구성한다.
  • ConstructorParameters<T> : 생성자 함수 타입의 모든 매개변수 타입을 추출, 모든 매개변수 타입을 가지는 튜플타입(T가 함수가 아닌 경우 never)을 생성한다.
  • ReturnType<T>: 함수 T의 반환 타입으로 구성된 타입을 생성함.
  • Required<T> : T의 모든 프로퍼티가 필수로 설정된 타입을 구성.

1-4 TypeScript를 이용해 함수 사용하기.

함수 정의할 때 쓰는 변수 = 매개변수 = 파라미터
함수를 호출할 때 사용되는 값 = 인수

일급 객체

  • 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체 = 일급객체
  • 조건1. 다른 함수에 매개변수로 제공 할 수 있음
  • 조건2. 함수에서 반환 가능
  • 조건3. 변수에 할당 가능
  • 자바스크립트와 타입스크립트의 함수는 일급객체임.

함수 선언식 vs 함수 표현식

타입스크립트에서 함수 사용하기

  • 타입스크립트 함수 작성 시, 반환 타입을 추론하도록 하는 것을 권장
  • 함수의 매개 변수와 인수의 탕비이 호환 가능하게 작성
  • 인수의 타입을 잘못 전달하면 에러가 발생

타입 추론

  • 타입 스크립트 컴파일러는 방정식의 한쪽에만 타입이 있더라도 타입을 추론할 수 있음.
  • 이러한 타입 추론 형태를 "contextual typing" 이라고 함.
  • 이를 통해 프로그램에서 타입을 유지하기 위한 노력을 줄일 수 있음.

1-5. 함수의 매개변수

기본 매개변수

  • 함수에 주어진 인자의 수는 함수가 기대하는 매개변수의 수와 일치해야함.

선택적 매개변수

  • 자바스크립트에서는 모든 매개변수가 선택적으로, 인수가 없으면 Undefined가 됨.
  • 타입스크립트에서도 선택적 매개변수 사용 가능. (변수명 뒤에 '?')

기본-초기화 매개변수

  • 타입스크립트에서는 값을 제공하지 않거나, undefined로 했을 때 매개변수의 값 할당 가능.

나머지 매개변수

  • 컴파일러는 생략부호(...) 뒤의 인자 배열을 빌드해 함수에서 사용할 수 있음.
  • 나머지 배개면수는 매개변수의 수를 무한으로 취급
  • 아무것도 넘겨주지 않을 수도 있음.

2. 클래스

2-1. 객체지향 프로그래밍 (OOP)

객체지향언어 (OOP)

  • OOP는 컴퓨터 프로그램을 객체의 모임으로 파악하려는 프로그래밍 패러다임.

  • 객체들은 서로 메시지를 주고받을 수 있으며 데이터를 처리할 수 있다.

  • 장점 1) 프로그램을 유연하고 변경이 용이하게 함.

  • 장점 2) 프로그램의 개발과 보수를 간편하게 만듦

  • 장점 3) 직관적인 코드 분석을 가능하게 함.

  • 객체 지향 프로그래밍의 중요한 특성 : 강한 응집력과 약한 결합력.

클래스 용어 설명

  • 클래스의 요소
    • 멤버
    • 필드
    • 생성자
    • 메소드
  • 인스턴스 : new 연산자에 의해 생성된 객체.

2-2. 접근제어자 / 상속

접근제어자

  • 속성 또는 메소드로의 접근을 제한하기 위해 사용.
  • public > protected > private
  • 자바와 다르게 package개념이 없어 default 접근 제어자는 존재하지 않음.

public

  • 프로그램 내에서 선언된 멤버들이 자유롭게 접근 가능.
  • 기본적 멤버는 public,

private

  • 멤버가 포함된 클래스 외부에서 접근을 막음.

protected

  • 멤버가 포함된 클래스와 그 하위클래스 외부에서의 접근을 막음.

상속

  • OOP는 상속을 이용하여 존재하는 클래스를 확장해 새로운 클래스 생성 가능.
  • extends 키워드로 Animal이라는 기초 클래스에서 Dog클래스가 파생됨.
  • 파생된 클래스는 하위 클래서, 기초 클래스는 상위클래스

2-3. Getter & Setter / readonly / static

getter & setter

  • 비공개로 설정하려는 속성은 private으로 설정하고, 속성값을 읽고 수정하는 getter/setter함수를 사용한다.
  • 클래스 속성에 직접 접근하는 것을 막고, getter/setter함수를 사용해 값을 받아오거나 수정함.
  • 속성에 직접 접근해 수정하면 데이터 무결성 깨짐 (캡슐화 권장)
  • 각 객체의 멤버에 접근하는 방법을 세밀하게 제어 가능.

readonly

  • 읽기만 가능한 속성을 선언하기 위해 사용
  • 선언될 떄나 생성자에서 값을 설정하면 이후 수정 불가.

static

  • 전역 멤버를 선언할 때 사용함.
  • 전역 멤버 : 객체마다 할당되지 않고 클래스의 모든 객체가 공유하는 멤버
  • "클래스명."을 앞에 붙여 static 멤버에게 접근할 수가 있음.

2-4. 추상클래스

추상클래스

  • 추상 클래스는 다른 클래스들이 파생될 수 있는 기초 클래스임
  • 직접 인스턴스화 할 수 없음
  • abstract 키워드는 추상 클래스나 추상 메소드를 정의하는데 사용
  • 추상 메소드는 클래스에는 구현되어있지 않고, 파생된 클래스에서 구현해야함.

추상클래스를 활용한 디자인 패턴

  • 프로그램의 일부분을 서브클래스로 캡슐화해 전체 구조를 바꾸지 않고 특정 단계의 기능을 바꾸는 것을 디자인 패턴이라고 함.
  • 전체적인 알고리즘은 상위 클래스에서 구현하고 다른 부부은 하위 클래스에서 구현함.
  • 전체 구조는 유사하지만 부분적으로 다른 구문으로 구성된 메소드의 코드 중복을 최소화 할 수 있다.
profile
백엔드개발자

0개의 댓글