Node.js 주특기 플러스주차 [1일차]
오늘 한 일
오늘은 타입스크립트에 대해서 배웠다.
타입스크립트의 타입 종류와 클래스, 상속, 인스턴스, 추상클래스, 인터페이스, SOLID 등에 대해서 배웠다. 클래스와 상속 부분은 Javascript에서도 배웠기 때문에 익숙했지만 인터페이스와 같은 경우는 많이 낯설었다. 어떤 경우에 사용하는지는 했는데 완벽하게 이해한 느낌은 아니다. 몇 번 더 직접 써봐야 익숙해질 것 같다.
배운 내용
1. TypeScript 의 타입
우선 typescript의 타입 종류에 대해서 배웠다.
boolean, number, string, 배열까지는 javascript의 타입과 같았고, 새로운 타입인 튜플과 enum, any, unknown, union에 대해서 배웠다.
튜플 : 타입스크립트에서 배열은 요소의 내용들이 전부 하나의 타입만을 가져야하는데 , 튜플의 경우에는 배열 안의 요소들이 다른 타입을 가질 수 있다.
enum : 열거형 데이터 타입, 다양한 상수를 이해하기 쉬운 문자열 이름으로 접근하고 사용할 수 있게 하는 타입, 값이 설정되어 있지 않으면 기본적으로 숫자 0으로 시작한다.
readonly : 객체의 속성을 불변으로 만드는데 사용되는 키워드, 즉 클래스의 속성이나 인터페이스의 속성을 변경할 수 없게 만든다.
추가적으로 가변적인 타입의 데이터를 저장할 때는 다음의 세 가지 타입을 사용할 수 있다.
any : 모든 타입을 저장할 수 있는 슈퍼타입. Javascript의 object타입과 같은 최상위 타입 (가급적이면 쓰지 않는 편이 좋다)
unknown : any 타입과 비슷한 역할을 하지만 더 안전한 방식으로 동작한다. any와 마찬가지로 모든 타입의 값을 저장할 수 있지만 다른 타입의 변수에 할당하려면 명시적으로 타입을 확인해야 한다.
union: 여러 타입 중 하나를 가질 수 있는 변수를 선언할 때 사용된다. | 연산자를 사용하여 여러 타입을 결합하여 표현할 수 있다.
enum: 열거형 타입으로 간단한 상수의 경우 enum을 쓴다.
object literal: 키 + 값의 쌍으로 구성된 객체를 정의할 때 쓰는 방식
<유틸리티 타입>
partial<T> : 타입 T의 모든 속성을 선택적으로 만들어서 기존 타입의 일부 속성만 제공하는 객체를 만들 수 있다.
required<T> : 타입 T의 모든 속성을 필수적으로 만든다.
readonly<T>: 타입 Tdml 모든 속성을 읽기 전용으로 만든다. 따라서 완전한 불변 객체로 만들 수 있다.
pick<T,K> : 타입 T에서 K속성들만 선택하여 새로운 타입을 만든다.
omit<T,K>: 타입 T에서 K속성들만 제외한 새로운 타입을 만든다.
2. 클래스와 상속
클래스와 상속에 대해 배웠다. 클래스는 일정한 요소들을 가진 객체를 찍어내는 틀이고 인스턴스는 클래스로 찍어낸 객체이다. 또한 상속은 부모 클래스의 속성을 그대로 물려받아 사용하는 것을 의미한다.
추상 클래스는 일반 클래스와는 다르게 인스턴스화를 할 수 없는 클래스이다. 추상 클래스의 목적은 상속을 통해 자식 클래스에서 메서드를 제가각 구현하도록 강제하는 용도이다.
인터페이스는 객체의 타입을 정의하는데 사용되는데 객체가 가져야 하는 속성과 메서드를 정의한다.
추상클래스와 인터페이스는 비슷한 일을 하는 듯 하면서도 다른 일을 하고 있는데 추상클래스는 클래스의 기본 구현을 제공하지만 인터페이스는 객체의 구조만을 정의하고 기본 구현을 제공하지 않는다.
만약 기본 구현을 제공하고 상속을 통해 확장하는데 초점을 맞추고 싶다면 추상 클래스를, 객체가 완벽하게 특정 구조를 준수하도록 강제하고 싶다면 인터페이스를 사용하면 된다.
3. 객체지향 설계원칙(SOLID)
S: 클래스는 하나의 책임만을 가져야 한다.
O: 클래스는 확장에 대해서는 열려 있어야 하고 수정에 대해서는 닫혀 있어야 한다.
L: 서브타입은 기반이 되는 슈퍼타입을 대체할 수 있어야 한다.(자식 클래스는 부모 클래스의 기능을 수정하지 않고도
부모 클래스와 호환되어야 한다.)
I: 클래스는 자신이 사용하지 않는 인터페이스의 영향을 받지 않아야 한다. 즉, 해당 클래스에게 무의미한 메소드의
구현을 막자는 의미.
D: 하위 수준 모듈보다 상위 수준 모듈에 의존해야한다.
오늘의 에러
https://yoonchan1121.tistory.com/120
[Error] 'tsc'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다. (typ
문제 상황 typescript 강의에서 초기 설정 중 문제가 발생했다. npm install typescript -g cmd창에서 위와 같은 명령어를 입력하여 global 옵션으로 타입스크립트를 설치했지만 tsc라는 명령어를 입력(타입스
yoonchan1121.tistory.com
'TIL' 카테고리의 다른 글
2023_12_22 TIL (1) | 2023.12.23 |
---|---|
2023_12_21 TIL (1) | 2023.12.22 |
2023_12_18 TIL (1) | 2023.12.18 |
2023-12-16 TIL (1) | 2023.12.16 |
2023_12_14 TIL (1) | 2023.12.15 |