하나하나 살펴보면 먼저 @param {ProductFilters} filters에서 앞의 sum() 함수 예제로 {ProductFilters}가 타입이 된다는 것을 알 수 있습니다. 그리고 그 타입은 위에 @typedef 주석으로 다음과 같이 정의되어 있습니다. ‘ProductFilters는 문자열 name과 숫자 stock을 속성으로 갖는 객체 타입’이라고 말이죠.
이렇게 앞서 살펴본 string, number, boolean 등 간단한 타입이 아니라 객체와 배열 더 나아가 복잡한 타입을 다룰 때는 타입 정의를 위해 작성해야 하는 코드가 많아집니다. 그리고 뒤에서 학습할 타입스크립트의 모듈 시스템을 사용하지 않는다면 파일마다 동일한 코드를 중복으로 작성해야 하는 단점이 생깁니다.
따라서 현재 JSDoc으로 작성해야 할 코드양이 많고 앞으로 더 많아진다면 타입스크립트를 배우는 것이 중·장기적으로는 더 좋은 선택이 될 것입니다.