💜 Key Point

enum, 생성자 S.O.L.I.D

💜 Today I Learned

[코드카타]

  • 옹알이 (2)
    처음에 위 문제를 보고 밑에 코드로 작성을 하였다. base에 해당하는 글자가 있으면 글자를 ""를 치환하도록 하였다. 밑에 코드로 제출을 하였더니 많은 테스트 케이스가 실패가 뜬 것이다.
    찾아보니 base에 해당하는 글자가 중간에 껴있을 경우 공백도 없기에 새로운 단어로 인식하여 원하는 답을 가져올 수 없는 것이다.
    ex) babbling = ["yayae"]
    aya를 제외하면 ye 가 남기에 이것 또한 발음할 수 있는 단어가 되기에 실패가 된다.

    이것을 수정하기 위해서 공백 치환에 한 칸을 띄우고 해주면 위와 같은 반례를 넘길 수 있다.

[타입스크립트]

  • readonly
    • 재할당할 수 없음
  • any
    • 모든 타입을 저장할 수 있음
    • 코드의 안정성과 유지 보수성을 저해함
  • unknown
    • any 타입과 비슷하지만 더 안전한 방식으로 동작함
    • 타입 단언을 통해 타입 보장을 하여 사용
    • 재할당이 일어나지 않으면 타입 안전성이 보장되지 않음
  • union
    • 여러 타입 중 하나를 가질 수 있는 변수 선언 시 사용
  • enum
    • 열거형 데이터 타입
    • 간단한 상수 값을 그룹화할 경우 아주 적합함
  • object literal(객체 리터럴)
    • enum과 비슷하지만 객체를 정의하는 방식
    • enum의 멤버는 상수이기 때문에 number, string 타입만 받을 수 있지만, 객체 리터럴은 어떤 타입이든 가능
  • 클래스
    • 객체를 만들기 위한 틀
  • 객체
    • 클래스를 기반으로 생성되며 클래스의 인스턴스라고도 함
  • 생성자(constructor)
    • 클래스의 인스턴스를 생성, 초기화하는데 사용되는 메서드
    • 클래스 내의 하나만 존재
  • 상속
    • 기존 클래스의 속성과 메서드를 물려받아 새로운 클래스를 정의
    • 상속 구현 시 extends 키워드 사용
  • 추상클래스
    • 인스턴스화를 할 수 없는 클래스
    • 기본 구현을 제공하고 상속을 통해 확장할 때 사용
  • 인터페이스
    • 객체가 가져야 하는 속성과 메서드를 정의
    • 규약과 같기 때문에 반드시 준수해야 함
    • 객체가 특정 구조를 완벽하게 준수하도록 강제하고 싶을 때 사용
  • S.O.L.I.D
    • S(SRP) : 클래스는 하나의 책임만 가져야 함
    • O(OCP) : 클래스의 기존 코드를 변경하지 않고도 기능을 확장할 수 있어야 함
    • L(LSP) : 서브타입은 기반이 되는 슈퍼타입을 대체할 수 있어야 함
    • I(ISP) : 클래스는 자신이 사용하지 않는 인터페이스의 영향을 받지 않아야 함
    • D(DIP) : 하위 수준 모듈(구현 클래스)보다 상위 수준 모듈(인터페이스)에 의존해야 함

0개의 댓글