Item15 - 동적 데이터에 인덱스 시그니처 사용하기 자바스크립트 객체는 문자열 키를 타입의 값에 관계없이 매핑합니다. 타입스크립트에서는 타입에 "인덱스 시그니처"를 명시하여 유연하게 매핑을 표현할 수 있습니다. type Rocket = { [property: string]: string } const rocket: Rocket = { name: 'Falcon 9', variant: 'v1.0', thrust: '4,940 kN', } // OK [property: string]: string 이 인덱스 시그니처이며 세 가지 의미를 담고 있습니다. 키의 이름 : 키의 위치만 표시하는 용도. 타입 체커에서는 사용하지않기때문에 중요하지않음 키의 타입 : string 이나 number 또는 symbol의 조..
타입 연산과 제네릭 사용으로 반복 줄이기 타입 반복을 줄이는 가장 간단한 방법은 타입에 이름을 붙이는 것입니다. 위 예제에서 한눈에봐도 반복되어지는 코드가 보입니다. 바로 x와y의 타입이 반복되어지고있습니다. 인터페이스를 활용하여 반복적인것을 줄일수 있습니다. 두개의 함수가 같은 타입의 시그니처를 공유하고있다고 가정해보겠습니다. 위예제와는 달리 조금은 복잡해보이기도 하지만 반복되는코드가 보입니다. 첫번째, 매개변수 url,opts 두개의 타입이 반복되어지고있습니다. 두번째, 반환타입이 Promise 가 반복되어지고있습니다. 위 사진과 같이 함수의 타입을 선언함으로써 반복적인 코드를 줄일수있게되었습니다. 또 다른 예제를 살펴보겠습니다. 이와같이 반복되는 코드가 있습니다. 위 예제의 코드는 State 를 인..
타입과 인터페이스의 차이점 알기 둘의 차이점을 알기 전 비슷한 점에 대해서 알아보겠습니다. 타입은 인터페이스로 정의하든 타입으로 정의 하든 상태에는 차이가 없습니다. 인터페이스는 "타입"을 확장할 수 있으며, 타입은"인터페이스"를 확장할 수 있습니다. IStateWithPop과 TStateWithPop은 둘 다 동일합니다. 여기서 한 가지 주의할 점이 있습니다. 인터페이스는 유니온 타입 같은 복잡한 타입을 확장하지 못합니다. 복잡한타입을 확장하고 싶다면 타입과 &을 사용해야 합니다. 이제부터는 타입과 인터페이스의 다른 점들을 살펴보겠습니다. 유니온 타입은 있지만 유니온 인터페이스는이라는 개념은 없습니다. 타입은 튜플을 사용할 수 있습니다 인터페이스도 튜플을 구현할 수 있습니다. 하지만 타입튜플에서 보이는..
함수 표현식에 타입 적용하기 자바스크립트(그리고 타입스크립트)는 함수 "문장식" 과 함수"표현식"을 다르게 인식합니다. 타입스크립트에서는 함수 "표현식"을 사용하는 것이 좋습니다. 왜냐하면 함수의 매개변수 부터 반환값까지 전체를 함수 "타입"으로 선언하여 함수 표현식을 재사용할 수 있다는 장점이 있기 때문입니다. 예를 들어 사칙연산을 하는 4개의 함수가 있다고 가정해보겠습니다. 한눈에봐도 반복되는 코드들이 눈에 보입니다. 반복되는 함수코드들을 하나의 함수 타입으로 통합하여 쓸 수 있습니다.