From 3d46732540857d6ec155413301513920067cffaf Mon Sep 17 00:00:00 2001 From: Ke Peng Date: Mon, 1 Feb 2016 15:56:06 +0800 Subject: [PATCH] add type define for traverse --- traverse/traverse-tests.ts | 40 ++++++++++++++++++++++++++++++++++++++ traverse/traverse.d.ts | 22 +++++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 traverse/traverse-tests.ts create mode 100644 traverse/traverse.d.ts 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; +}