Ответ
TypeScript — самый популярный, добавляет статическую типизацию с поддержкой дженериков, интерфейсов, union-типов. Полная совместимость с JS.
Flow — разработан Facebook, легковесный, но менее популярный. Использует аннотации через комментарии.
Пример TypeScript:
interface User {
id: number;
name: string;
}
function greet(user: User): string {
return `Hello, ${user.name}!`;
}
JSDoc — подход через комментарии, не требует компиляции, но менее строгий:
/**
* @param {number} x
* @returns {number}
*/
function double(x) {
return x * 2;
}
PropTypes — для проверки типов пропсов в React, работает в runtime.