Flow — это расширение Javascript для проверки типов вашего приложения, а propTypes — встроенная функция проверки типов ReactJS. Их функциональность может показаться похожей с некоторыми отличиями.
Flow — это инструмент статической проверки типов для вашего приложения. Когда крупномасштабным приложениям нужны более быстрые и производительные коды, Flow приходит на помощь. Другими словами, Flow дает разработчику право решать, как разработчик хочет, чтобы код работал в любом браузере, и Flow позаботится о том, чтобы он работал именно так.
Пример: в этом примере мы будем использовать поток.
Javascript
// @flow
function
concat(a: string, b: string, c: string) {
return
a + b + c;
}
console.log(concat(
"Geeks"
,
"For"
,
"Geeks"
));
console.log(concat(1, 2, 3));
Выход:
GeeksForGeeks //throws Error Because it is of different type
Объяснение: Мы не можем видеть слияние чисел, потому что мы определили a, b, c типа данных String.
Преимущества использования потока:
- Это инструмент статического анализа.
- Делает код быстрее и легче масштабируется.
- Flow лучше поддерживает React и React native.
- Это обеспечивает легкое принятие.
Недостатки использования потока
- Он отлавливает ошибки во время компиляции, поэтому теоретически он может пропустить некоторые ошибки во время выполнения. Расширение Javascript, как мы видели в потоке, работает для проверки типов всего проекта, но по мере роста приложения мы можем найти больше ошибок. Типы Prop гарантируют, что пользователь передает значения правильного типа данных. Всегда разумно использовать прототипы, если размер проекта большой.
PropTypes
Подобно тому, как Flow — это расширение, PropType — это встроенная проверка типов в React. Ничего, кроме типа передаваемой опоры, не может быть проверено им. Таким образом, это в основном механизм проверки типов во время выполнения.
Примечание: до выпуска React 15.5.0 PropTypes были доступны в пакете React, но теперь мы должны добавить библиотеку prop-types в наш проект.
Пример: в этом примере мы определяем прототип как строку и импортируем прототипы для проверки кода.
Javascript
import PropTypes from
'prop-types'
;
class Concat extends React.Component {
static defaultProps = {
name:
'GeeksForGeeks'
,
}
render() {
return
(
<h1>Hi, {
this
.props.name}</h1>
);
}
}
Concat.propTypes = {
name: PropTypes.string
};
Выход:
Преимущества:
- PropTypes — один из лучших способов отловить любую ошибку, возникающую во время выполнения.
- Они не так типобезопасны, как поток, подобный расширению, но их гораздо проще настроить и с ними работать.
Недостатки:
- Он не такой гибкий, как Flow.
Flow | PropTypes |
Flow работает во время компиляции | PropTypes ловит ошибки во время выполнения |
Flow — это расширение Javascript для проверки типов. | PropType — это библиотека. |
Это гибкая проверка типов, поскольку вы передаете только аннотированные типы в компоненты, определение свойств не является обязательным. | Он очень строгий и может проверять только типы значений, переданных в качестве реквизита. |