diff --git a/types/react/v15/index.d.ts b/types/react/v15/index.d.ts
index c35e2df3c0..19cd290c7b 100644
--- a/types/react/v15/index.d.ts
+++ b/types/react/v15/index.d.ts
@@ -78,7 +78,7 @@ declare namespace React {
type ComponentType
= ComponentClass
| StatelessComponent
;
type Key = string | number;
- type Ref = string | ((instance: T | null) => any);
+ type Ref = string | { bivarianceHack(instance: T | null): any }["bivarianceHack"];
// tslint:disable-next-line:interface-over-type-literal
type ComponentState = {};
@@ -521,7 +521,7 @@ declare namespace React {
// Event Handler Types
// ----------------------------------------------------------------------
- type EventHandler> = (event: E) => void;
+ type EventHandler> = { bivarianceHack(event: E): void }["bivarianceHack"];
type ReactEventHandler = EventHandler>;
@@ -3335,7 +3335,7 @@ declare namespace React {
// React.PropTypes
// ----------------------------------------------------------------------
- type Validator = (object: T, key: string, componentName: string, ...rest: any[]) => Error | null;
+ type Validator = { bivarianceHack(object: T, key: string, componentName: string, ...rest: any[]): Error | null }["bivarianceHack"];
interface Requireable extends Validator {
isRequired: Validator;