Ответ
В JavaScript есть несколько способов типизации:
- JSDoc – аннотации в комментариях для подсказок IDE:
/**
* @param {string} name
* @returns {number}
*/
function getNameLength(name) {
return name.length;
}
- TypeScript – надмножество JS с статической типизацией:
interface User {
id: number;
name: string;
}
function greet(user: User): string {
return `Hello, ${user.name}`;
}
- PropTypes – проверка типов props в React:
import PropTypes from 'prop-types';
Component.propTypes = {
count: PropTypes.number.isRequired,
title: PropTypes.string
};
- Flow – статический анализатор типов от Facebook:
// @flow
function square(n: number): number {
return n * n;
}
- Ручные проверки (type guards):
function isString(value) {
return typeof value === 'string';
}