diff --git a/dva/dva-tests.tsx b/dva/dva-tests.tsx
new file mode 100644
index 0000000000..079e0eea81
--- /dev/null
+++ b/dva/dva-tests.tsx
@@ -0,0 +1,46 @@
+//
+//
+
+import dva from 'dva';
+import { connect } from 'dva';
+import { Router, Route } from 'dva/router';
+
+// 1. Initialize
+const app = dva();
+
+// 2. Model
+app.model({
+ namespace: 'count',
+ state: 0,
+ reducers: {
+ add (count) {
+ return count + 1
+ },
+ minus(count) {
+ return count - 1
+ },
+ },
+});
+
+// 3. View
+const App = connect(({ count }) => ({
+ count
+}))(function (props) {
+ return (
+
+
{ props.count }
+
+
+
+ );
+});
+
+// 4. Router
+app.router(({ history }) =>
+
+
+
+);
+
+// 5. Start
+const countApp = app.start();
diff --git a/dva/dva.d.ts b/dva/dva.d.ts
new file mode 100644
index 0000000000..ffaa618785
--- /dev/null
+++ b/dva/dva.d.ts
@@ -0,0 +1,45 @@
+// Type definitions for dva v1.0.0
+// Project: https://github.com/dvajs/dva
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+
+declare module 'dva' {
+ /** connecting Container Components */
+ export function connect(maps):Function;
+
+ export default function dva(opts?:Object):{
+
+ /** dva plugin */
+ use: (hooks:Object)=>void,
+
+ /** dva bootstrap */
+ start: (selector?:Object)=>void,
+
+ /** dva add model */
+ model: (model:Object)=>void,
+
+ /** dva setting router */
+ router: (router)=>void,
+ };
+}
+
+/**
+ * https://github.com/reactjs/react-router
+ */
+declare module 'dva/router' {
+ export class Router {}
+ export class Route {}
+}
+
+/**
+ * https://github.com/reactjs/react-router-redux
+ */
+declare module 'dva/routerRedux' {
+ export default Object;
+}
+
+/**
+ * https://github.com/fis-components/whatwg-fetch
+ */
+declare module 'dva/fetch' {
+ export default Function;
+}