Type을 옹호하는건 아닌데, 표현력이 더 좋은 예가 잘 이해가 안됩니다. 해당 예문도 Types로 동일하게 표현할 수 있는거 아닌가요?

interface Foo {(b: number): A; (): B}
type Foo = {(b: number): A; (): B}

이펙티브 타입스크립트 책에서 타입과 인터페이스 중에 어느것을 사용해야 할지 정리해둔 부분이 있어 인용해봅니다.

타입과 인터페이스 중 어느것을 사용해야 할지 결론을 내려 보겠습니다. 복잡한 타입이라면 고민할 것도 없이 타입 별칭을 사용하면 됩니다. 그러나 타입과 인터페이스, 두 가지 방법으로 모두 표현할 수 있는 간단한 객체 타입이라면 일관성과 보강의 관점에서 고려해 봐야 합니다. 일관되게 인터페이스를 사용하는 코드베이스에서 작업하고 있다면 인터페이스를 사용하고, 일관되게 타입을 사용 중이라면 타입을 사용하면 됩니다.

아직 스타일이 확립되지 않은 프로젝트라면, 향후에 보강의 가능성이 있을지 생각해 봐야 합니다. 어떤 API에 대한 타입 선언을 작성해야 한다면 인터페이스를 사용하는 게 좋습니다. API가 변경될 때 사용자가 인터페이스를 통해 새로운 필드를 병합할 수 있어 유용하기 때문입니다. 그러나 프로젝트 내부적으로 사용되는 타입에 선언 병합이 발생하는 것은 잘못된 설계입니다. 따라서 이럴 때는 타입을 사용해야 합니다.