diff --git a/types/prop-types/index.d.ts b/types/prop-types/index.d.ts new file mode 100644 index 0000000000..8449418fdf --- /dev/null +++ b/types/prop-types/index.d.ts @@ -0,0 +1,29 @@ +// Type definitions for prop-types v15.5.4 +// Project: https://github.com/reactjs/prop-types +// Definitions by: DovydasNavickas +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.2 + +export type Validator = (object: T, key: string, componentName: string, ...rest: any[]) => Error | null; + +export interface Requireable extends Validator { + isRequired: Validator; +} + +export type ValidationMap = {[K in keyof T]?: Validator }; + +export const any: Requireable; +export const array: Requireable; +export const bool: Requireable; +export const func: Requireable; +export const number: Requireable; +export const object: Requireable; +export const string: Requireable; +export const node: Requireable; +export const element: Requireable; +export function instanceOf(expectedClass: {}): Requireable; +export function oneOf(types: any[]): Requireable; +export function oneOfType(types: Array>): Requireable; +export function arrayOf(type: Validator): Requireable; +export function objectOf(type: Validator): Requireable; +export function shape(type: ValidationMap): Requireable; diff --git a/types/prop-types/prop-types-tests.ts b/types/prop-types/prop-types-tests.ts new file mode 100644 index 0000000000..3f43cc73e5 --- /dev/null +++ b/types/prop-types/prop-types-tests.ts @@ -0,0 +1,25 @@ +import * as PropTypes from "prop-types"; + +interface Props { + any: any; + array: string[]; + bool: boolean; + func: any; + string: string; + number: number; + object: {}; + node: any; + element: any; +} + +let propTypes: PropTypes.ValidationMap = { + any: PropTypes.any.isRequired, + array: PropTypes.array.isRequired, + bool: PropTypes.bool.isRequired, + func: PropTypes.func.isRequired, + number: PropTypes.number.isRequired, + object: PropTypes.object.isRequired, + string: PropTypes.string.isRequired, + node: PropTypes.node.isRequired, + element: PropTypes.element.isRequired +}; diff --git a/types/prop-types/tsconfig.json b/types/prop-types/tsconfig.json new file mode 100644 index 0000000000..32e0c3a3f5 --- /dev/null +++ b/types/prop-types/tsconfig.json @@ -0,0 +1,20 @@ +{ + "files": [ + "index.d.ts", + "prop-types-tests.ts" + ], + "compilerOptions": { + "module": "commonjs", + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true, + "lib" : [ "es6" ] + } +} diff --git a/types/prop-types/tslint.json b/types/prop-types/tslint.json new file mode 100644 index 0000000000..f9e30021f4 --- /dev/null +++ b/types/prop-types/tslint.json @@ -0,0 +1,3 @@ +{ + "extends": "../tslint.json" +}