Зачем нужен TypeScript, если есть PropTypes и JSDoc?
Основы TypeScript
PropTypes и JSDoc решают часть задач TypeScript, но слабее: PropTypes проверяет только props и только во время работы, JSDoc — описание, которое легко «разъезжается» с кодом.
PropTypes
- проверка в рантайме и только в dev-сборке;
- только props React-компонентов;
- ошибка видна, когда сценарий уже выполнился, а не в редакторе;
- из React 19 PropTypes удалены.
JSDoc
/** @param {{ id: string, total: number }} order */
function pay(order) {}- редактор может проверять JSDoc через TypeScript (
// @ts-check) — это по сути и есть TypeScript; - сложные типы (дженерики, объединения) описывать неудобно.
Что даёт именно TypeScript
- проверка всего кода, а не только props;
- ошибки до запуска, в редакторе и CI;
- выразительные типы и вывод типов;
- безопасный рефакторинг по всему проекту.
Коротко для собеседования
PropTypes проверяет только props в рантайме, JSDoc неудобен для сложных типов; TypeScript проверяет весь код статически и даёт безопасный рефакторинг.
Подробнее: TypeScript — JSDoc Reference