2018-11-22 19:49:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								---
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								title: React TypeChecking with PropTypes
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
										 
							
							
								localeTitle: React TypeChecking с 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								---
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								## React PropTypes
  
						 
					
						
							
								
									
										
										
										
											2018-10-12 16:00:59 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
										 
							
							
								Они служат в качестве метода проверки типов, поскольку приложение имеет тенденцию к росту, при этом очень большая база ошибок, как правило, исправляется с 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								## Как получить PropTypes
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
										 
							
							
								Начиная с с 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
										 
							
							
								Чтобы использовать е г о 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-05-15 10:08:19 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								```shell
							 
						 
					
						
							
								
									
										
										
										
											2018-10-12 16:00:59 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								npm install --save prop-types 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-11-22 19:49:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								После этого, на самом деле, доступен целый ряд валидаторов, которые могут быть использованы для обеспечения того, чтобы данные, получаемы разработчиком верны.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								Когда отображается недопустимое значение, в консоли JavaScript появится предупреждение.
							 
						 
					
						
							
								
									
										
										
										
											2018-10-12 16:00:59 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								Обратите внимание, что по соображениям производительности определенные PropTypes проверяются только в режиме разработки.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-11-22 19:49:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								Также, напротив, состояние компонента, которое можно манипулировать по мере необходимости, эти props только для чтения.
							 
						 
					
						
							
								
									
										
										
										
											2018-10-12 16:00:59 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-11-22 19:49:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								Это значение не может быть изменено компонентой.
							 
						 
					
						
							
								
									
										
										
										
											2018-10-12 16:00:59 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-11-22 19:49:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								## Доступные PropTypes
  
						 
					
						
							
								
									
										
										
										
											2018-10-12 16:00:59 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-11-22 19:49:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
										 
							
							
								Ниже пример кода с 
							 
						 
					
						
							
								
									
										
										
										
											2018-10-12 16:00:59 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								```javascript
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								import PropTypes from 'prop-types'; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 class MyComponent extends Component{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    constructor(props){ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        super(props); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    render(){ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        return ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								            ... 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								        ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 MyComponent.propTypes = { 
							 
						 
					
						
							
								
									
										
										
										
											2018-11-22 19:49:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								  // prop, который описывает примитивные типы данных в JS. По умолчинаию они необязательны
							 
						 
					
						
							
								
									
										
										
										
											2018-10-12 16:00:59 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  optionalArray: PropTypes.array, 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  optionalBool: PropTypes.bool, 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  optionalFunc: PropTypes.func, 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  optionalNumber: PropTypes.number, 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  optionalObject: PropTypes.object, 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  optionalString: PropTypes.string, 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  optionalSymbol: PropTypes.symbol, 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 
							 
						 
					
						
							
								
									
										
										
										
											2018-11-22 19:49:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
										 
							
							
								  // В с е 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  // или fragment, содержащий эти типы данных. 
							 
						 
					
						
							
								
									
										
										
										
											2018-10-12 16:00:59 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  optionalNode: PropTypes.node, 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 
							 
						 
					
						
							
								
									
										
										
										
											2018-11-22 19:49:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								  // React элемент в качестве PropType 
							 
						 
					
						
							
								
									
										
										
										
											2018-10-12 16:00:59 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  optionalElement: PropTypes.element, 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 
							 
						 
					
						
							
								
									
										
										
										
											2018-11-22 19:49:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								  // Определение того что prop это экзампляр класса. Для этого нужно использовать 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  // JS's instanceof оператор. 
							 
						 
					
						
							
								
									
										
										
										
											2018-10-12 16:00:59 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  optionalMessage: PropTypes.instanceOf(AnotherComponent), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 
							 
						 
					
						
							
								
									
										
										
										
											2018-11-22 19:49:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								  // Вы можете ограничить prop определив конкретное значание для него
							 
						 
					
						
							
								
									
										
										
										
											2018-10-12 16:00:59 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  optionalEnum: PropTypes.oneOf(['News', 'Photos']), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 
							 
						 
					
						
							
								
									
										
										
										
											2018-11-22 19:49:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								  // Объект определенный как несколько различных типов 
							 
						 
					
						
							
								
									
										
										
										
											2018-10-12 16:00:59 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  optionalUnion: PropTypes.oneOfType([ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    PropTypes.string, 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    PropTypes.number, 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    PropTypes.instanceOf(AnotherComponent) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  ]), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 
							 
						 
					
						
							
								
									
										
										
										
											2018-11-22 19:49:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
										 
							
							
								  // Массив с 
							 
						 
					
						
							
								
									
										
										
										
											2018-10-12 16:00:59 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  optionalArrayOf: PropTypes.arrayOf(PropTypes.number), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 
							 
						 
					
						
							
								
									
										
										
										
											2018-11-22 19:49:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
										 
							
							
								  // Объект с 
							 
						 
					
						
							
								
									
										
										
										
											2018-10-12 16:00:59 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  optionalObjectOf: PropTypes.objectOf(PropTypes.number), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 
							 
						 
					
						
							
								
									
										
										
										
											2018-11-22 19:49:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
										 
							
							
								  // Объект с 
							 
						 
					
						
							
								
									
										
										
										
											2018-10-12 16:00:59 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  optionalObjectWithShape: PropTypes.shape({ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    color: PropTypes.string, 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    fontSize: PropTypes.number 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  }), 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 
							 
						 
					
						
							
								
									
										
										
										
											2018-11-22 19:49:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								  // Вы можете добавить в цепочке определение ключевое слово `isRequired` ,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  // чтобы быть уверенным что будет показано предупреждение, что prop отсутсвует
							 
						 
					
						
							
								
									
										
										
										
											2018-10-12 16:00:59 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  requiredFunc: PropTypes.func.isRequired, 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 
							 
						 
					
						
							
								
									
										
										
										
											2018-11-22 19:49:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								  // Любой тип данных 
							 
						 
					
						
							
								
									
										
										
										
											2018-10-12 16:00:59 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  requiredAny: PropTypes.any.isRequired, 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								 }; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								## Установка значений по умолчанию
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
										 
							
							
								В  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
										 
							
							
								Они гарантируют, что у 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								Код ниже иллюстрирует, как использовать эту функциональность.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								```javascript
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								import React,{Component} from 'react'; 
							 
						 
					
						
							
								
									
										
										
										
											2018-11-22 19:49:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								import PropTypes from 'prop-types'; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								class MyComponent extends Component{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  constructor(props){ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    super(props); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  render(){ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    return ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								      < h3 > Hello, {this.props.name}< / h3 >  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								    ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								MyComponent.defaultProps = { 
							 
						 
					
						
							
								
									
										
										
										
											2018-10-12 16:00:59 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								  name: 'Stranger' 
							 
						 
					
						
							
								
									
										
										
										
											2018-11-22 19:49:48 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								}; 
							 
						 
					
						
							
								
									
										
										
										
											2018-10-12 16:00:59 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
										 
							
							
								Для получения дополнительной информации о 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
								
									
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-02-12 19:25:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
								
									
								 
							
							
								Перейдите на [официальный сайт ](https://reactjs.org/ ) и прочитайте документы, или [GitHub Repo ](https://github.com/facebook/react/ )