반응형
타입 주도 개발
강력한 타입 시스템은 큰 힘을 준다고 합니다. 그래서 TypeScript로 코드를 구현할 때 '타입을 추종하는' 자신을 발견하게 될 것이라고 합니다.
사람들은 이것을 타입 주도 개발이라 부릅니다.
타입 주도 개발(type-driven development)
타입 시그니처를 먼저 정하고 값을 나중에 채우는 프로그래밍 방식
표현식이 수용할 수 있는 값의 타입을 제한하는 것이 정적 타입 시스템의 핵심입니다.
표현력이 더 풍부한 타입 시스템일수록 표현식 안의 값을 더 잘 설명할 수 있습니다.
표현력이 높은 타입 시스템을 함수에 적용하면 함수 타입 시그니처를 통해 함수에 관하여 원하는 거의 모든 정보를 얻을 수 있습니다.
function map<T, U>(array: T[], f: (item: T) => U): U[]{
// ...
}
이전에 map을 전혀 본 적 없다고 해도 위의 시그니처를 보고 map이 어떤 동작을 하는지 어느 정도는 감을 잠을 수 있습니다.
map 함수는 T 배열, 그리고 T를 U로 매핑하는 함수를 인수로 받아 U 배열을 반환합니다.
함수의 구현을 전혀 확인하지 않고도 위의 정보를 알 수 있었다는 사실에 주목하면 됩니다.
TypeScript 프로그램을 구현할 때는 먼저 함수의 타입 시그니처를 정의한 다음 구현을 추가합니다.
구현을 시작하기 전에 프로그램을 타입 수준에서 구상해 보면 모든 것이 맞는지를 상위 수준에서 확인할 수 있습니다.
반응형
'👶 TypeScript' 카테고리의 다른 글
super (0) | 2023.01.14 |
---|---|
클래스와 상속 (0) | 2023.01.14 |
제네릭 타입 기본값 (0) | 2023.01.14 |
한정된 다형성으로 인수의 개수 정의하기 (0) | 2023.01.14 |
여러 제한을 적용한 한정된 다형성 (0) | 2023.01.13 |