diff --git a/types/koa-views/index.d.ts b/types/koa-views/index.d.ts
new file mode 100644
index 0000000000..5d9d88b647
--- /dev/null
+++ b/types/koa-views/index.d.ts
@@ -0,0 +1,60 @@
+// Type definitions for koa-views 2.x
+// Project: https://github.com/queckezz/koa-views
+// Definitions by: Alex Friedman
+// Definitions: https://github.com/brooklyndev/DefinitelyTyped
+
+/* =================== USAGE ===================
+
+ import * as Koa from 'koa';
+ import * as views from 'koa-views';
+
+ const app = new Koa();
+ app.use(views(__dirname + '/views', {
+ map: {
+ html: 'underscore'
+ }
+ }));
+
+ app.use(async function (ctx, next) {
+ await ctx.render('user', {
+ user: 'John'
+ });
+ });
+
+ =============================================== */
+
+
+import * as Koa from "koa";
+
+declare function views(dir: string, opts?: {
+
+ /*
+ * default extension for your views
+ */
+ extension?: string,
+ /*
+ * these options will get passed to the view engine
+ */
+ options?: any,
+ /*
+ * map a file extension to an engine
+ */
+ map?: any,
+ /*
+ * replace consolidate as default engine source
+ */
+ engineSource?: any,
+
+}): Koa.Middleware;
+declare namespace views { }
+
+export = views;
+
+
+import * as koa from "koa";
+
+declare module 'koa' {
+ interface Context {
+ render(viewPath: string, locals?: any): Promise;
+ }
+}
diff --git a/types/koa-views/koa-views-tests.ts b/types/koa-views/koa-views-tests.ts
new file mode 100644
index 0000000000..f025f55d93
--- /dev/null
+++ b/types/koa-views/koa-views-tests.ts
@@ -0,0 +1,19 @@
+import * as Koa from "koa";
+import * as views from "koa-views";
+
+const app = new Koa();
+
+app.use(views('/views', {
+ map: {
+ html: 'underscore'
+ },
+ extension: '.html',
+ engineSource: {},
+ options: {}
+}));
+
+app.use((ctx: Koa.Context) => {
+ ctx.render('user', {
+ user: 'John'
+ }).then(() => console.log('done render call'));
+});
\ No newline at end of file
diff --git a/types/koa-views/tsconfig.json b/types/koa-views/tsconfig.json
new file mode 100644
index 0000000000..69d0c62b8c
--- /dev/null
+++ b/types/koa-views/tsconfig.json
@@ -0,0 +1,22 @@
+{
+ "compilerOptions": {
+ "module": "commonjs",
+ "lib": [
+ "es6"
+ ],
+ "noImplicitAny": true,
+ "noImplicitThis": true,
+ "strictNullChecks": true,
+ "baseUrl": "../",
+ "typeRoots": [
+ "../"
+ ],
+ "types": [],
+ "noEmit": true,
+ "forceConsistentCasingInFileNames": true
+ },
+ "files": [
+ "index.d.ts",
+ "koa-views-tests.ts"
+ ]
+}
\ No newline at end of file
diff --git a/types/koa-views/tslint.json b/types/koa-views/tslint.json
new file mode 100644
index 0000000000..0f47deabb4
--- /dev/null
+++ b/types/koa-views/tslint.json
@@ -0,0 +1,6 @@
+{
+ "extends": "../tslint.json",
+ "rules": {
+ "forbidden-types": false
+ }
+}
\ No newline at end of file