diff --git a/react-infinite/react-infinite-tests.tsx b/react-infinite/react-infinite-tests.tsx
new file mode 100644
index 0000000000..91a86abce2
--- /dev/null
+++ b/react-infinite/react-infinite-tests.tsx
@@ -0,0 +1,113 @@
+///
+///
+
+import * as React from 'react';
+import Infinite = require('react-infinite');
+
+class Test1 extends React.Component<{}, {}> {
+ render() {
+ return (
+
+
+
+
+
+ );
+ }
+}
+
+class Test2 extends React.Component<{}, {}> {
+ render() {
+ return (
+
+
+
+
+
+ );
+ }
+}
+
+class Test3 extends React.Component<{}, {}> {
+ render() {
+ return (
+
+
+
+
+
+ );
+ }
+}
+
+class Test4 extends React.Component<{}, {}> {
+ render() {
+ return (
+
+
+
+
+
+ );
+ }
+}
+
+var ListItem = React.createClass<{key: number; num: number;}, {}>({
+ render: function() {
+ return
+ List Item {this.props.num}
+
;
+ }
+});
+
+var InfiniteList = React.createClass({
+ getInitialState: function() {
+ return {
+ elements: this.buildElements(0, 20),
+ isInfiniteLoading: false
+ }
+ },
+
+ buildElements: function(start: number, end: number) {
+ var elements = [] as React.ReactElement[];
+ for (var i = start; i < end; i++) {
+ elements.push()
+ }
+ return elements;
+ },
+
+ handleInfiniteLoad: function() {
+ var that = this;
+ this.setState({
+ isInfiniteLoading: true
+ });
+ setTimeout(function() {
+ var elemLength = that.state.elements.length,
+ newElements = that.buildElements(elemLength, elemLength + 1000);
+ that.setState({
+ isInfiniteLoading: false,
+ elements: that.state.elements.concat(newElements)
+ });
+ }, 2500);
+ },
+
+ elementInfiniteLoad: function() {
+ return
+ Loading...
+
;
+ },
+
+ render: function() {
+ return
+ {this.state.elements}
+ ;
+ }
+});
diff --git a/react-infinite/react-infinite.d.ts b/react-infinite/react-infinite.d.ts
new file mode 100644
index 0000000000..123883a0e0
--- /dev/null
+++ b/react-infinite/react-infinite.d.ts
@@ -0,0 +1,36 @@
+// Type definitions for react-infinite
+// Project: https://github.com/seatgeek/react-infinite
+// Definitions by: rhysd
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+
+///
+
+declare module "react-infinite" {
+ import Infinite = ReactInfinite.Infinite;
+ export = Infinite;
+}
+
+declare namespace ReactInfinite {
+ import React = __React;
+
+ interface InfiniteProps extends React.Props {
+ elementHeight: number | number[];
+ containerHeight?: number;
+ preloadBatchSize?: number | Object;
+ preloadAdditionalHeight?: number | Object;
+ handleScroll?: (node: React.ReactElement) => void;
+ infiniteLoadBeginBottomOffset?: number;
+ infiniteLoadBeginEdgeOffset?: number;
+ onInfiniteLoad?: () => void;
+ loadingSpinnerDelegate?: React.ReactElement;
+ isInfiniteLoading?: boolean;
+ timeScrollStateLastsForAfterUserScrolls?: number;
+ className?: string;
+ useWindowAsScrollContainer?: boolean;
+ displayBottomUpwards?: boolean;
+ }
+
+ export class Infinite extends React.Component {
+ static containerHeightScaleFactor(n: number): any;
+ }
+}