diff --git a/react-mixin/react-mixin-tests.tsx b/react-mixin/react-mixin-tests.tsx
new file mode 100644
index 0000000000..32532b1339
--- /dev/null
+++ b/react-mixin/react-mixin-tests.tsx
@@ -0,0 +1,55 @@
+///
+///
+
+import reactMixin = require('react-mixin');
+import * as React from 'react';
+
+var someMixin: React.Mixin;
+var someOtherMixin: React.Mixin;
+
+class Foo extends React.Component {
+ render(): JSX.Element { return ; }
+}
+
+reactMixin(Foo.prototype, someMixin);
+reactMixin(Foo.prototype, someOtherMixin);
+
+
+var mixin: React.Mixin = {
+ getDefaultProps: function(): any {
+ return {b: 2};
+ }
+};
+
+class Foo2 extends React.Component {
+ static defaultProps = {
+ a: 1
+ };
+ render(): JSX.Element {
+ console.log(this.props); // {a: 1, b: 2}
+ return null;
+ }
+}
+
+reactMixin.onClass(Foo2, mixin);
+
+@reactMixin.decorate(mixin)
+class Foo3 extends React.Component {
+}
+
+function autobind(methodNames: string[]): React.Mixin {
+ return {
+ componentWillMount: function(): void {
+ methodNames.forEach((name) => {
+ this[name] = this[name].bind(this);
+ });
+ }
+ };
+}
+
+@reactMixin.decorate(mixin)
+@reactMixin.decorate(autobind(Object.keys(mixin)))
+class Foo4 extends React.Component {
+}
+
+
diff --git a/react-mixin/react-mixin-tests.tsx.tscparams b/react-mixin/react-mixin-tests.tsx.tscparams
new file mode 100644
index 0000000000..c90abf04fc
--- /dev/null
+++ b/react-mixin/react-mixin-tests.tsx.tscparams
@@ -0,0 +1 @@
+--target es5 --noImplicitAny --experimentalDecorators --jsx react
diff --git a/react-mixin/react-mixin.d.ts b/react-mixin/react-mixin.d.ts
new file mode 100644
index 0000000000..e7d25a6ab4
--- /dev/null
+++ b/react-mixin/react-mixin.d.ts
@@ -0,0 +1,27 @@
+// Type definitions for react-mixin 2.0.2
+// Project: https://github.com/brigand/react-mixin
+// Definitions by: Qubo
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+///
+
+declare module "react-mixin" {
+ import * as React from 'react';
+
+ namespace reactMixin {
+ export interface ClassDecorator {
+ (target: TFunction): TFunction|void;
+ }
+
+ interface ReactMixin {
+ decorate(mixin: React.Mixin): ClassDecorator;
+ onClass(clazz: any, mixin: React.Mixin): React.ComponentClass;
+ (clazz: any, mixin: React.Mixin): React.ComponentClass;
+ }
+ }
+
+ var reactMixin: reactMixin.ReactMixin;
+
+ export = reactMixin;
+}
+