지금까지의 타입들은 모두 구체타입이다booleanstringDate() => void기대하는 타입을 정확히 알고 있고실제 타입이 전달되었는지 확인할 때는 구체 타입이 유용하다하지만 어떤 타입을 사용할지 미리 알기 힘든 상황에는함수를 특정 타입으로 제한하기 어렵다배열 함
타입 주도 개발 강력한 타입 시스템을 추종하는 것을 타입 주도 개발이라고 부른다 -> 타입 시그니처를 먼저 정하고 값을 나중에 채우는 프로그래밍 방식 표현식이 수용할 수 있는 값의 타입을 제한하는 것이 정적 타입 시스템의 핵심이다 표현력이 풍부한 타입 시스템일수록 표
타입스크립트 클래스의 기능 대부분은 C가시성 한정자, 프로퍼티 초기자, 다형성, 데코레이터, 인터페이스 등 지원프로퍼티 초기자와 데코레이터 기능은 자바스크립트에서도 지원하므로 실제 런타임 코드를 생성한다나머지는 타입스크립트 고유 기능으로 컴파일 타임에만 존재한다컴파일
abstract 키워드는 해당 클래스를 바로 인스턴스화 할 수 없음을 의미하고 필요한 메소드를 추상 클래스에 자유롭게 추가할 수 있다상속받은 클래스를 통해서만 인스턴스화할 수 있도록 허용추상 클래스는 추상 메소드도 반드시 구현해야 한다
자바스크립트처럼 타입스크립트도 super 호출을 지원한다자식 클래스가 부모 클래스에 정의된 메소드를 오버라이드 하면자식 인스턴스는 super 를 통해 부모 버전의 메소드를 호출할 수 있다super.take() 같은 메소드 호출생성자 함수에서만 호출할 수 있는 super
this 는 값 뿐만 아니라 타입으로도 사용할 수 있다메소드의 반환 타입을 지정할 때 this 타입을 유용하게 사용 가능하다
클래스는 인터페이스를 통해 사용할 때가 많다타입 별칭과 같이 인터페이스도 타입에 이름을 지어주는 수단으로 인터페이스를 사용하면 타입을 더 깔끔하게 정의할 수 있다타입 별칭과 인터페이스는 문법만 다르고 거의 같은 기능을 수행한다몇몇 부분에서만 차이를 보인다둘 다 형태를
타입스크립트는 클래스를 비교할 때 다른 타입과 달리 이름이 아니라 구조를 기준으로 삼는다클래스는 자신과 똑같은 프로퍼티와 메소드를 저으이하는 기존 일반 객체를 포함헤 클래스의 형태를 공유하는 모든 타입과 호환된다타입스크립트에서는 Zebra를 인수로 받는 함수에 Pood
type의 종류와 상관 없이 코드를 그룹화 할 수 있다변수, 함수, 객체 등일반적인 타입과 달리 값을 가질 수 있다같은 이름을 가진 타입을 재사용하거나모듈 단위로 분리할 때 사용하면 좋을 것 같다한 파일 안에서 공간을 분리할 때 등한 파일(모듈) 내에 네임스페이스가 하
함수와 타입 처럼 클래스와 인터페이스도 기본값과 상한/하한 설정을 포함한다양한 제네릭 타입 매개변수 기능을 지원한다제네릭 타입의 범위는 클래스나 인터페이스 전체가 될 수도 있고, 특정 메서드가 될 수도 있다함수와 마찬가지로 제네릭에 구체 타입으 ㄹ명시하거나 타입스크립트
자바스크립트와 타입스크립트는 trait, mixin 키워드를 제공하지 않지만손쉽게 직접 구현할 수 있다두 키워드 모두 둘 이상의 키워드를 상속받는 다중 상속과 관련된 기능을 제공하며역할 지향 프로그래밍을 제공한다역할 지향 프로그래밍에서는 Shape 이라고 표현하는 대신
데코레이터는 타입스크립트의 실험적 기능으로클래스, 클래스 메서드, 매개변수를 활용한 메타 프로그래밍에 깔끔한 문법을 제공한다클래스 데코레이터인 @serializable 은클래스를 감싸고 선택적으로 이를 대체하는 새 클래스를 반환한다데코레이터를 쓰지 않으면 다음과 같이
타입스크립트는 클래스나 메서드에 final 키워드를 지원하지 않지만클래스에서 final 효과를 구현할 수 있다final 키워드는 클래스나 메서드를 확장, 오버라이드 할 수 없도록 막는 것타입스크립트에서는 비공개 생성자(private constructor) 로 만들 수
디자인 패턴을 구현해보지 않으면 객체 지향 프로그램을 다뤘다고 하기 어렵다팩토리 패턴은 어떤 객체를 만들지 전적으로 팩토리에 위임한다위 예제에서 타입을 사용하였지만 인터페이스를 사용해도 된다다음은 팩토리위 예에선 캠패니언 객체 패턴으로 타입 Shoe 와 값 Shoe 를
타입스크립트는 세계 최고 수준의 타입 시스템을 자랑한다배열은 객체의 서브타입이다튜플은 배열의 서브타입이다모든 것은 any 의 서브타입이다never 는 모든 것의 서브타입이다객체를 사용해야 하는 곳에는 배열도 사용할 수 있다배열을 사용해야 하는 곳에는 튜플도 사용할 수
타입 정의에서 -? 를 사용하면 optional protperty 의 물음표를 지울 수 있다..선택적 프로퍼티를 해제하는 것https://www.typescriptlang.org/docs/handbook/2/mapped-types.html위와 같이 사용하여 r
원시 타입: 연산된 모든 타입의 합집합객체 타입: 연산된 객체 타입의 공통된 속성명에 대한 타입의 합집합위처럼 서로 다른 타입이 가진 같은 이름의 속성 명 끼리의 합집합이 생성된다주의위와 같이 사용하면 타입 A 에는 b 속성이 없고 타입 B 에는 a 속성이 없기 때문에
type 은 프로그램이 가지는 데이터의 종류이면서 할 수 있는 작업의 집합이라고 볼 수 있다객체 타입 어노테이션을 작성할 떄에는 가장 좁은 범위로 해야 한다다형성을 갖기 때문에 상위 타입으로 어노테이션으로 작성하여도 오류가 발생하지 않지만컴파일 타임에 해당 객체가 갖지
매개변수화된(제네릭) 타입 등 복합 타입에서는 복잡하다복합 타입의 서브타입 규칙은 프로그래밍 언어마다 다르다타입스크립트에서 위의 경우 객체의 프로퍼티를 삭제하더라도 타입스크립트에서는 인식하지 못한다ExistingUser 의 타입이 deleteUser 함수 user 인수
서브타입과 수퍼타입의 관계는 모든 정적 타입 언어에서 중요한 개념이다할당성 또한 중요하다할당성이란 A 라는 타입을 B 라는 타입이 필요한 곳에 사용할 수 있는지를 결정하는 규칙을 의미한다열거형이 아닌 타입에서는다음의 규칙 중 하나를 만족하면 할당이 가능하다규칙1: 서브
타입스크립트의 타입 추론이 어떻게 동작하는지 이해하기 위한 핵심 개념이다타입스크립트는 정밀하기보다 일반적으로 타입을 추론한다let 으로 값을 바꿀 수 있는 변수를 선언하면해당 변수의 타입이 리터럴 값에서 기본 타입으로 넓혀진다
객체는 자바스크립트의 핵심으로 타입스크립트는 객체를 안전하게 표현하고조작할 수 있는 다양한 수단을 제공한다API 통신 등을 할 때 깊이를 갖는 중첩된 객체에 대한 응답 타입을 일일히 작성하기 불편하다이 때 타입스크립트의 key in 방식을 이용하면 좋다모든 형태와 배열
TypeScript-first 스키마 선언 및 검증 라이브러리스키마 선언: 간단한 문자열부터 복잡한 객체까지 다양한 스키마를 선언타입 추론: TypeScript를 통해 스키마를 선언하면 자동으로 정적 타입을 추론유효성 검증: 선언한 스키마에 맞지 않는 데이터를 검증하고