Files
react-native/Libraries/Utilities/deprecatedPropType.js
T
Xuan Huang e60ad0837e Type more globals
Summary:
Changelog: [Internal]

This diff add types to some of the common globals so uses of
them through `global` are now typed.

All the globals are marked as read-only for their intented uses.
However, some of them do have write cites (mostly are in tests to
deliberately set up a special test environment). Those write cites
are considered as "necessary evil" and annotated as `FlowFixMe`.

Reviewed By: yungsters

Differential Revision: D30158145

fbshipit-source-id: 93a99063361a4b7a1e33d9fc97a661be30a4d8f9
2021-08-26 01:06:44 -07:00

37 lines
945 B
JavaScript

/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
* @flow strict-local
*/
import UIManager from '../ReactNative/UIManager';
/**
* Adds a deprecation warning when the prop is used.
*/
function deprecatedPropType(
propType: ReactPropsCheckType,
explanation: string,
): ReactPropsCheckType {
return function validate(props, propName, componentName, ...rest) {
// Don't warn for native components.
if (
global.RN$Bridgeless !== true &&
UIManager.hasViewManagerConfig(componentName) &&
props[propName] !== undefined
) {
console.warn(
`\`${propName}\` supplied to \`${componentName}\` has been deprecated. ${explanation}`,
);
}
return propType(props, propName, componentName, ...rest);
};
}
module.exports = deprecatedPropType;