diff --git a/traverse/traverse-tests.ts b/traverse/traverse-tests.ts
new file mode 100644
index 000000000..bc5bfa87c
--- /dev/null
+++ b/traverse/traverse-tests.ts
@@ -0,0 +1,40 @@
+///
+
+import traverse = require('traverse');
+
+function testForEach(){
+ var obj = [ 5, 6, -3, [ 7, 8, -2, 1 ], { f : 10, g : -13 } ];
+
+ traverse(obj).forEach(function (x) {
+ if (x < 0) this.update(x + 128);
+ });
+
+ console.dir(obj);
+}
+
+function testReduce(){
+ var obj = {
+ a : [1,2,3],
+ b : 4,
+ c : [5,6],
+ d : { e : [7,8], f : 9 },
+ };
+
+ var leaves = traverse(obj).reduce(function (acc, x) {
+ if (this.isLeaf) acc.push(x);
+ return acc;
+ }, []);
+
+ console.dir(leaves);
+}
+
+function testMap(){
+ var c: any[] = [3, 4];
+ var obj = { a : 1, b : 2, c : c };
+ obj.c.push(obj);
+
+ var scrubbed = traverse(obj).map(function (x) {
+ if (this.circular) this.remove()
+ });
+ console.dir(scrubbed);
+}
diff --git a/traverse/traverse.d.ts b/traverse/traverse.d.ts
new file mode 100644
index 000000000..c45c3db03
--- /dev/null
+++ b/traverse/traverse.d.ts
@@ -0,0 +1,22 @@
+// Type definitions for traverse 0.6.6
+// Project: https://github.com/substack/js-traverse
+// Definitions by: newclear
+// Definitions: https://github.com/newclear/DefinitelyTyped
+
+declare module "traverse" {
+ interface Traverse {
+ get(paths: string[]): any;
+ has(paths: string[]): boolean;
+ set(paths: string[], value: any): any;
+ map(cb: (v: any) => void): any;
+ forEach(cb: (v: any) => void): any;
+ reduce(cb: (acc: any, v: any) => void, init?: any): any;
+ paths(): string[];
+ nodes(): any[];
+ clone(): any;
+ }
+
+ function traverse(obj: any): Traverse;
+
+ export = traverse;
+}