Какие знаешь способы типизации в JS

«Какие знаешь способы типизации в JS» — вопрос из категории TypeScript, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В JavaScript есть несколько способов типизации:

  1. JSDoc – аннотации в комментариях для подсказок IDE:
/**
 * @param {string} name
 * @returns {number}
 */
function getNameLength(name) {
  return name.length;
}
  1. TypeScript – надмножество JS с статической типизацией:
interface User {
  id: number;
  name: string;
}

function greet(user: User): string {
  return `Hello, ${user.name}`;
}
  1. PropTypes – проверка типов props в React:
import PropTypes from 'prop-types';

Component.propTypes = {
  count: PropTypes.number.isRequired,
  title: PropTypes.string
};
  1. Flow – статический анализатор типов от Facebook:
// @flow
function square(n: number): number {
  return n * n;
}
  1. Ручные проверки (type guards):
function isString(value) {
  return typeof value === 'string';
}