=== tests/cases/compiler/underscoreTest1_underscoreTests.ts === /// declare var $; >$ : any declare function alert(x: string): void; >alert : (x: string) => void >x : string _.each([1, 2, 3], (num) => alert(num.toString())); >_.each([1, 2, 3], (num) => alert(num.toString())) : void >_.each : { (list: T[], iterator: Iterator, context?: any): void; (list: Dictionary, iterator: Iterator, context?: any): void; } >_ : Underscore.Static >each : { (list: T[], iterator: Iterator, context?: any): void; (list: Dictionary, iterator: Iterator, context?: any): void; } >[1, 2, 3] : number[] >(num) => alert(num.toString()) : (num: number) => void >num : number >alert(num.toString()) : void >alert : (x: string) => void >num.toString() : string >num.toString : (radix?: number) => string >num : number >toString : (radix?: number) => string _.each({ one: 1, two: 2, three: 3 }, (value: number, key?: string) => alert(value.toString())); >_.each({ one: 1, two: 2, three: 3 }, (value: number, key?: string) => alert(value.toString())) : void >_.each : { (list: T[], iterator: Iterator, context?: any): void; (list: Dictionary, iterator: Iterator, context?: any): void; } >_ : Underscore.Static >each : { (list: T[], iterator: Iterator, context?: any): void; (list: Dictionary, iterator: Iterator, context?: any): void; } >{ one: 1, two: 2, three: 3 } : { [x: string]: number; one: number; two: number; three: number; } >one : number >two : number >three : number >(value: number, key?: string) => alert(value.toString()) : (value: number, key?: string) => void >value : number >key : string >alert(value.toString()) : void >alert : (x: string) => void >value.toString() : string >value.toString : (radix?: number) => string >value : number >toString : (radix?: number) => string _.map([1, 2, 3], (num) => num * 3); >_.map([1, 2, 3], (num) => num * 3) : number[] >_.map : { (list: T[], iterator: Iterator, context?: any): U[]; (list: Dictionary, iterator: Iterator, context?: any): U[]; } >_ : Underscore.Static >map : { (list: T[], iterator: Iterator, context?: any): U[]; (list: Dictionary, iterator: Iterator, context?: any): U[]; } >[1, 2, 3] : number[] >(num) => num * 3 : (num: number) => number >num : number >num * 3 : number >num : number _.map({ one: 1, two: 2, three: 3 }, (value: number, key?: string) => value * 3); >_.map({ one: 1, two: 2, three: 3 }, (value: number, key?: string) => value * 3) : number[] >_.map : { (list: T[], iterator: Iterator, context?: any): U[]; (list: Dictionary, iterator: Iterator, context?: any): U[]; } >_ : Underscore.Static >map : { (list: T[], iterator: Iterator, context?: any): U[]; (list: Dictionary, iterator: Iterator, context?: any): U[]; } >{ one: 1, two: 2, three: 3 } : { [x: string]: number; one: number; two: number; three: number; } >one : number >two : number >three : number >(value: number, key?: string) => value * 3 : (value: number, key?: string) => number >value : number >key : string >value * 3 : number >value : number var sum = _.reduce([1, 2, 3], (memo, num) => memo + num, 0); >sum : number >_.reduce([1, 2, 3], (memo, num) => memo + num, 0) : number >_.reduce : { (list: T[], iterator: Reducer, initialValue?: T, context?: any): T; (list: T[], iterator: Reducer, initialValue: U, context?: any): U; (list: Dictionary, iterator: Reducer, initialValue?: T, context?: any): T; (list: Dictionary, iterator: Reducer, initialValue: U, context?: any): U; } >_ : Underscore.Static >reduce : { (list: T[], iterator: Reducer, initialValue?: T, context?: any): T; (list: T[], iterator: Reducer, initialValue: U, context?: any): U; (list: Dictionary, iterator: Reducer, initialValue?: T, context?: any): T; (list: Dictionary, iterator: Reducer, initialValue: U, context?: any): U; } >[1, 2, 3] : number[] >(memo, num) => memo + num : (memo: number, num: number) => number >memo : number >num : number >memo + num : number >memo : number >num : number var list = [[0, 1], [2, 3], [4, 5]]; >list : number[][] >[[0, 1], [2, 3], [4, 5]] : number[][] >[0, 1] : number[] >[2, 3] : number[] >[4, 5] : number[] var flat = _.reduceRight(list, (a, b) => a.concat(b), []); >flat : number[] >_.reduceRight(list, (a, b) => a.concat(b), []) : number[] >_.reduceRight : { (list: T[], iterator: Reducer, initialValue?: T, context?: any): T; (list: T[], iterator: Reducer, initialValue: U, context?: any): U; (list: Dictionary, iterator: Reducer, initialValue?: T, context?: any): T; (list: Dictionary, iterator: Reducer, initialValue: U, context?: any): U; } >_ : Underscore.Static >reduceRight : { (list: T[], iterator: Reducer, initialValue?: T, context?: any): T; (list: T[], iterator: Reducer, initialValue: U, context?: any): U; (list: Dictionary, iterator: Reducer, initialValue?: T, context?: any): T; (list: Dictionary, iterator: Reducer, initialValue: U, context?: any): U; } >list : number[][] >(a, b) => a.concat(b) : (a: number[], b: number[]) => number[] >a : number[] >b : number[] >a.concat(b) : number[] >a.concat : { (...items: U[]): number[]; (...items: number[]): number[]; } >a : number[] >concat : { (...items: U[]): number[]; (...items: number[]): number[]; } >b : number[] >[] : undefined[] var even = _.find([1, 2, 3, 4, 5, 6], (num) => num % 2 == 0); >even : number >_.find([1, 2, 3, 4, 5, 6], (num) => num % 2 == 0) : number >_.find : { (list: T[], iterator: Iterator, context?: any): T; (list: Dictionary, iterator: Iterator, context?: any): T; } >_ : Underscore.Static >find : { (list: T[], iterator: Iterator, context?: any): T; (list: Dictionary, iterator: Iterator, context?: any): T; } >[1, 2, 3, 4, 5, 6] : number[] >(num) => num % 2 == 0 : (num: number) => boolean >num : number >num % 2 == 0 : boolean >num % 2 : number >num : number var evens = _.filter([1, 2, 3, 4, 5, 6], (num) => num % 2 == 0); >evens : number[] >_.filter([1, 2, 3, 4, 5, 6], (num) => num % 2 == 0) : number[] >_.filter : { (list: T[], iterator: Iterator, context?: any): T[]; (list: Dictionary, iterator: Iterator, context?: any): T[]; } >_ : Underscore.Static >filter : { (list: T[], iterator: Iterator, context?: any): T[]; (list: Dictionary, iterator: Iterator, context?: any): T[]; } >[1, 2, 3, 4, 5, 6] : number[] >(num) => num % 2 == 0 : (num: number) => boolean >num : number >num % 2 == 0 : boolean >num % 2 : number >num : number var listOfPlays = [{ title: "Cymbeline", author: "Shakespeare", year: 1611 }, { title: "The Tempest", author: "Shakespeare", year: 1611 }, { title: "Other", author: "Not Shakespeare", year: 2012 }]; >listOfPlays : { title: string; author: string; year: number; }[] >[{ title: "Cymbeline", author: "Shakespeare", year: 1611 }, { title: "The Tempest", author: "Shakespeare", year: 1611 }, { title: "Other", author: "Not Shakespeare", year: 2012 }] : { title: string; author: string; year: number; }[] >{ title: "Cymbeline", author: "Shakespeare", year: 1611 } : { title: string; author: string; year: number; } >title : string >author : string >year : number >{ title: "The Tempest", author: "Shakespeare", year: 1611 } : { title: string; author: string; year: number; } >title : string >author : string >year : number >{ title: "Other", author: "Not Shakespeare", year: 2012 } : { title: string; author: string; year: number; } >title : string >author : string >year : number _.where(listOfPlays, { author: "Shakespeare", year: 1611 }); >_.where(listOfPlays, { author: "Shakespeare", year: 1611 }) : { title: string; author: string; year: number; }[] >_.where : { (list: T[], properties: Object): T[]; (list: Dictionary, properties: Object): T[]; } >_ : Underscore.Static >where : { (list: T[], properties: Object): T[]; (list: Dictionary, properties: Object): T[]; } >listOfPlays : { title: string; author: string; year: number; }[] >{ author: "Shakespeare", year: 1611 } : { author: string; year: number; } >author : string >year : number var odds = _.reject([1, 2, 3, 4, 5, 6], (num) => num % 2 == 0); >odds : number[] >_.reject([1, 2, 3, 4, 5, 6], (num) => num % 2 == 0) : number[] >_.reject : { (list: T[], iterator: Iterator, context?: any): T[]; (list: Dictionary, iterator: Iterator, context?: any): T[]; } >_ : Underscore.Static >reject : { (list: T[], iterator: Iterator, context?: any): T[]; (list: Dictionary, iterator: Iterator, context?: any): T[]; } >[1, 2, 3, 4, 5, 6] : number[] >(num) => num % 2 == 0 : (num: number) => boolean >num : number >num % 2 == 0 : boolean >num % 2 : number >num : number _.all([true, 1, null, 'yes'], _.identity); >_.all([true, 1, null, 'yes'], _.identity) : boolean >_.all : { (list: T[], iterator?: Iterator, context?: any): boolean; (list: Dictionary, iterator?: Iterator, context?: any): boolean; } >_ : Underscore.Static >all : { (list: T[], iterator?: Iterator, context?: any): boolean; (list: Dictionary, iterator?: Iterator, context?: any): boolean; } >[true, 1, null, 'yes'] : (string | number | boolean)[] >_.identity : (value: T) => T >_ : Underscore.Static >identity : (value: T) => T _.any([null, 0, 'yes', false]); >_.any([null, 0, 'yes', false]) : boolean >_.any : { (list: T[], iterator?: Iterator, context?: any): boolean; (list: Dictionary, iterator?: Iterator, context?: any): boolean; } >_ : Underscore.Static >any : { (list: T[], iterator?: Iterator, context?: any): boolean; (list: Dictionary, iterator?: Iterator, context?: any): boolean; } >[null, 0, 'yes', false] : (string | number | boolean)[] _.contains([1, 2, 3], 3); >_.contains([1, 2, 3], 3) : boolean >_.contains : { (list: T[], value: T): boolean; (list: Dictionary, value: T): boolean; } >_ : Underscore.Static >contains : { (list: T[], value: T): boolean; (list: Dictionary, value: T): boolean; } >[1, 2, 3] : number[] _.invoke([[5, 1, 7], [3, 2, 1]], 'sort'); >_.invoke([[5, 1, 7], [3, 2, 1]], 'sort') : any[] >_.invoke : { (list: any[], methodName: string, ...args: any[]): any[]; (list: Dictionary, methodName: string, ...args: any[]): any[]; } >_ : Underscore.Static >invoke : { (list: any[], methodName: string, ...args: any[]): any[]; (list: Dictionary, methodName: string, ...args: any[]): any[]; } >[[5, 1, 7], [3, 2, 1]] : number[][] >[5, 1, 7] : number[] >[3, 2, 1] : number[] var stooges = [{ name: 'moe', age: 40 }, { name: 'larry', age: 50 }, { name: 'curly', age: 60 }]; >stooges : { name: string; age: number; }[] >[{ name: 'moe', age: 40 }, { name: 'larry', age: 50 }, { name: 'curly', age: 60 }] : { name: string; age: number; }[] >{ name: 'moe', age: 40 } : { name: string; age: number; } >name : string >age : number >{ name: 'larry', age: 50 } : { name: string; age: number; } >name : string >age : number >{ name: 'curly', age: 60 } : { name: string; age: number; } >name : string >age : number _.pluck(stooges, 'name'); >_.pluck(stooges, 'name') : any[] >_.pluck : { (list: any[], propertyName: string): any[]; (list: Dictionary, propertyName: string): any[]; } >_ : Underscore.Static >pluck : { (list: any[], propertyName: string): any[]; (list: Dictionary, propertyName: string): any[]; } >stooges : { name: string; age: number; }[] _.max(stooges, (stooge) => stooge.age); >_.max(stooges, (stooge) => stooge.age) : { name: string; age: number; } >_.max : { (list: T[], iterator?: Iterator, context?: any): T; (list: Dictionary, iterator?: Iterator, context?: any): T; } >_ : Underscore.Static >max : { (list: T[], iterator?: Iterator, context?: any): T; (list: Dictionary, iterator?: Iterator, context?: any): T; } >stooges : { name: string; age: number; }[] >(stooge) => stooge.age : (stooge: { name: string; age: number; }) => number >stooge : { name: string; age: number; } >stooge.age : number >stooge : { name: string; age: number; } >age : number var numbers = [10, 5, 100, 2, 1000]; >numbers : number[] >[10, 5, 100, 2, 1000] : number[] _.min(numbers); >_.min(numbers) : number >_.min : { (list: T[], iterator?: Iterator, context?: any): T; (list: Dictionary, iterator?: Iterator, context?: any): T; } >_ : Underscore.Static >min : { (list: T[], iterator?: Iterator, context?: any): T; (list: Dictionary, iterator?: Iterator, context?: any): T; } >numbers : number[] _.sortBy([1, 2, 3, 4, 5, 6], (num) => Math.sin(num)); >_.sortBy([1, 2, 3, 4, 5, 6], (num) => Math.sin(num)) : number[] >_.sortBy : { (list: T[], iterator: Iterator, context?: any): T[]; (list: Dictionary, iterator: Iterator, context?: any): T[]; (list: T[], propertyName: string): T[]; (list: Dictionary, propertyName: string): T[]; } >_ : Underscore.Static >sortBy : { (list: T[], iterator: Iterator, context?: any): T[]; (list: Dictionary, iterator: Iterator, context?: any): T[]; (list: T[], propertyName: string): T[]; (list: Dictionary, propertyName: string): T[]; } >[1, 2, 3, 4, 5, 6] : number[] >(num) => Math.sin(num) : (num: number) => number >num : number >Math.sin(num) : number >Math.sin : (x: number) => number >Math : Math >sin : (x: number) => number >num : number // not sure how this is typechecking at all.. Math.floor(e) is number not string..? _([1.3, 2.1, 2.4]).groupBy((e: number, i?: number, list?: number[]) => Math.floor(e)); >_([1.3, 2.1, 2.4]).groupBy((e: number, i?: number, list?: number[]) => Math.floor(e)) : Dictionary >_([1.3, 2.1, 2.4]).groupBy : { (iterator?: Iterator, context?: any): Dictionary; (propertyName: string): Dictionary; } >_([1.3, 2.1, 2.4]) : Underscore.WrappedArray >_ : Underscore.Static >[1.3, 2.1, 2.4] : number[] >groupBy : { (iterator?: Iterator, context?: any): Dictionary; (propertyName: string): Dictionary; } >(e: number, i?: number, list?: number[]) => Math.floor(e) : (e: number, i?: number, list?: number[]) => number >e : number >i : number >list : number[] >Math.floor(e) : number >Math.floor : (x: number) => number >Math : Math >floor : (x: number) => number >e : number _.groupBy([1.3, 2.1, 2.4], (num: number) => Math.floor(num)); >_.groupBy([1.3, 2.1, 2.4], (num: number) => Math.floor(num)) : Dictionary >_.groupBy : { (list: T[], iterator?: Iterator, context?: any): Dictionary; (list: Dictionary, iterator?: Iterator, context?: any): Dictionary; (list: T[], propertyName: string): Dictionary; (list: Dictionary, propertyName: string): Dictionary; } >_ : Underscore.Static >groupBy : { (list: T[], iterator?: Iterator, context?: any): Dictionary; (list: Dictionary, iterator?: Iterator, context?: any): Dictionary; (list: T[], propertyName: string): Dictionary; (list: Dictionary, propertyName: string): Dictionary; } >[1.3, 2.1, 2.4] : number[] >(num: number) => Math.floor(num) : (num: number) => number >num : number >Math.floor(num) : number >Math.floor : (x: number) => number >Math : Math >floor : (x: number) => number >num : number _.groupBy(['one', 'two', 'three'], 'length'); >_.groupBy(['one', 'two', 'three'], 'length') : Dictionary >_.groupBy : { (list: T[], iterator?: Iterator, context?: any): Dictionary; (list: Dictionary, iterator?: Iterator, context?: any): Dictionary; (list: T[], propertyName: string): Dictionary; (list: Dictionary, propertyName: string): Dictionary; } >_ : Underscore.Static >groupBy : { (list: T[], iterator?: Iterator, context?: any): Dictionary; (list: Dictionary, iterator?: Iterator, context?: any): Dictionary; (list: T[], propertyName: string): Dictionary; (list: Dictionary, propertyName: string): Dictionary; } >['one', 'two', 'three'] : string[] _.countBy([1, 2, 3, 4, 5], (num) => num % 2 == 0 ? 'even' : 'odd'); >_.countBy([1, 2, 3, 4, 5], (num) => num % 2 == 0 ? 'even' : 'odd') : Dictionary >_.countBy : { (list: T[], iterator?: Iterator, context?: any): Dictionary; (list: Dictionary, iterator?: Iterator, context?: any): Dictionary; (list: T[], propertyName: string): Dictionary; (list: Dictionary, propertyName: string): Dictionary; } >_ : Underscore.Static >countBy : { (list: T[], iterator?: Iterator, context?: any): Dictionary; (list: Dictionary, iterator?: Iterator, context?: any): Dictionary; (list: T[], propertyName: string): Dictionary; (list: Dictionary, propertyName: string): Dictionary; } >[1, 2, 3, 4, 5] : number[] >(num) => num % 2 == 0 ? 'even' : 'odd' : (num: number) => string >num : number >num % 2 == 0 ? 'even' : 'odd' : string >num % 2 == 0 : boolean >num % 2 : number >num : number _.shuffle([1, 2, 3, 4, 5, 6]); >_.shuffle([1, 2, 3, 4, 5, 6]) : number[] >_.shuffle : { (list: T[]): T[]; (list: Dictionary): T[]; } >_ : Underscore.Static >shuffle : { (list: T[]): T[]; (list: Dictionary): T[]; } >[1, 2, 3, 4, 5, 6] : number[] // (function(){ return _.toArray(arguments).slice(1); })(1, 2, 3, 4); _.size({ one: 1, two: 2, three: 3 }); >_.size({ one: 1, two: 2, three: 3 }) : number >_.size : { (list: T[]): number; (list: Dictionary): number; } >_ : Underscore.Static >size : { (list: T[]): number; (list: Dictionary): number; } >{ one: 1, two: 2, three: 3 } : { [x: string]: number; one: number; two: number; three: number; } >one : number >two : number >three : number /////////////////////////////////////////////////////////////////////////////////////// _.first([5, 4, 3, 2, 1]); >_.first([5, 4, 3, 2, 1]) : number >_.first : { (list: T[]): T; (list: T[], count: number): T[]; } >_ : Underscore.Static >first : { (list: T[]): T; (list: T[], count: number): T[]; } >[5, 4, 3, 2, 1] : number[] _.initial([5, 4, 3, 2, 1]); >_.initial([5, 4, 3, 2, 1]) : number >_.initial : { (list: T[]): T; (list: T[], count: number): T[]; } >_ : Underscore.Static >initial : { (list: T[]): T; (list: T[], count: number): T[]; } >[5, 4, 3, 2, 1] : number[] _.last([5, 4, 3, 2, 1]); >_.last([5, 4, 3, 2, 1]) : number >_.last : { (list: T[]): T; (list: T[], count: number): T[]; } >_ : Underscore.Static >last : { (list: T[]): T; (list: T[], count: number): T[]; } >[5, 4, 3, 2, 1] : number[] _.rest([5, 4, 3, 2, 1]); >_.rest([5, 4, 3, 2, 1]) : number[] >_.rest : (list: T[], index?: number) => T[] >_ : Underscore.Static >rest : (list: T[], index?: number) => T[] >[5, 4, 3, 2, 1] : number[] _.compact([0, 1, false, 2, '', 3]); >_.compact([0, 1, false, 2, '', 3]) : (string | number | boolean)[] >_.compact : (list: T[]) => T[] >_ : Underscore.Static >compact : (list: T[]) => T[] >[0, 1, false, 2, '', 3] : (string | number | boolean)[] _.flatten([1, 2, 3, 4]); >_.flatten([1, 2, 3, 4]) : {}[] >_.flatten : { (list: T[][]): T[]; (array: any[], shallow?: boolean): T[]; } >_ : Underscore.Static >flatten : { (list: T[][]): T[]; (array: any[], shallow?: boolean): T[]; } >[1, 2, 3, 4] : number[] _.flatten([1, [2]]); >_.flatten([1, [2]]) : {}[] >_.flatten : { (list: T[][]): T[]; (array: any[], shallow?: boolean): T[]; } >_ : Underscore.Static >flatten : { (list: T[][]): T[]; (array: any[], shallow?: boolean): T[]; } >[1, [2]] : (number | number[])[] >[2] : number[] // typescript doesn't like the elements being different _.flatten([1, [2], [3, [[4]]]]); >_.flatten([1, [2], [3, [[4]]]]) : {}[] >_.flatten : { (list: T[][]): T[]; (array: any[], shallow?: boolean): T[]; } >_ : Underscore.Static >flatten : { (list: T[][]): T[]; (array: any[], shallow?: boolean): T[]; } >[1, [2], [3, [[4]]]] : (number | (number | number[][])[])[] >[2] : number[] >[3, [[4]]] : (number | number[][])[] >[[4]] : number[][] >[4] : number[] _.flatten([1, [2], [3, [[4]]]], true); >_.flatten([1, [2], [3, [[4]]]], true) : {}[] >_.flatten : { (list: T[][]): T[]; (array: any[], shallow?: boolean): T[]; } >_ : Underscore.Static >flatten : { (list: T[][]): T[]; (array: any[], shallow?: boolean): T[]; } >[1, [2], [3, [[4]]]] : (number | (number | number[][])[])[] >[2] : number[] >[3, [[4]]] : (number | number[][])[] >[[4]] : number[][] >[4] : number[] _.without([1, 2, 1, 0, 3, 1, 4], 0, 1); >_.without([1, 2, 1, 0, 3, 1, 4], 0, 1) : number[] >_.without : (list: T[], ...values: T[]) => T[] >_ : Underscore.Static >without : (list: T[], ...values: T[]) => T[] >[1, 2, 1, 0, 3, 1, 4] : number[] _.union([1, 2, 3], [101, 2, 1, 10], [2, 1]); >_.union([1, 2, 3], [101, 2, 1, 10], [2, 1]) : number[] >_.union : (...arrays: T[][]) => T[] >_ : Underscore.Static >union : (...arrays: T[][]) => T[] >[1, 2, 3] : number[] >[101, 2, 1, 10] : number[] >[2, 1] : number[] _.intersection([1, 2, 3], [101, 2, 1, 10], [2, 1]); >_.intersection([1, 2, 3], [101, 2, 1, 10], [2, 1]) : number[] >_.intersection : (...arrays: T[][]) => T[] >_ : Underscore.Static >intersection : (...arrays: T[][]) => T[] >[1, 2, 3] : number[] >[101, 2, 1, 10] : number[] >[2, 1] : number[] _.difference([1, 2, 3, 4, 5], [5, 2, 10]); >_.difference([1, 2, 3, 4, 5], [5, 2, 10]) : number[] >_.difference : (list: T[], ...others: T[][]) => T[] >_ : Underscore.Static >difference : (list: T[], ...others: T[][]) => T[] >[1, 2, 3, 4, 5] : number[] >[5, 2, 10] : number[] _.uniq([1, 2, 1, 3, 1, 4]); >_.uniq([1, 2, 1, 3, 1, 4]) : number[] >_.uniq : { (list: T[], isSorted?: boolean): T[]; (list: T[], isSorted: boolean, iterator: Iterator, context?: any): U[]; } >_ : Underscore.Static >uniq : { (list: T[], isSorted?: boolean): T[]; (list: T[], isSorted: boolean, iterator: Iterator, context?: any): U[]; } >[1, 2, 1, 3, 1, 4] : number[] _.zip(['moe', 'larry', 'curly'], [30, 40, 50], [true, false, false]); >_.zip(['moe', 'larry', 'curly'], [30, 40, 50], [true, false, false]) : Tuple3[] >_.zip : { (a0: T0[], a1: T1[]): Tuple2[]; (a0: T0[], a1: T1[], a2: T2[]): Tuple3[]; (a0: T0[], a1: T1[], a2: T2[], a3: T3[]): Tuple4[]; (...arrays: any[][]): any[][]; } >_ : Underscore.Static >zip : { (a0: T0[], a1: T1[]): Tuple2[]; (a0: T0[], a1: T1[], a2: T2[]): Tuple3[]; (a0: T0[], a1: T1[], a2: T2[], a3: T3[]): Tuple4[]; (...arrays: any[][]): any[][]; } >['moe', 'larry', 'curly'] : string[] >[30, 40, 50] : number[] >[true, false, false] : boolean[] _.object(['moe', 'larry', 'curly'], [30, 40, 50]); >_.object(['moe', 'larry', 'curly'], [30, 40, 50]) : any >_.object : { (list: any[][]): any; (keys: string[], values: any[]): any; } >_ : Underscore.Static >object : { (list: any[][]): any; (keys: string[], values: any[]): any; } >['moe', 'larry', 'curly'] : string[] >[30, 40, 50] : number[] _.object([['moe', 30], ['larry', 40], ['curly', 50]]); >_.object([['moe', 30], ['larry', 40], ['curly', 50]]) : any >_.object : { (list: any[][]): any; (keys: string[], values: any[]): any; } >_ : Underscore.Static >object : { (list: any[][]): any; (keys: string[], values: any[]): any; } >[['moe', 30], ['larry', 40], ['curly', 50]] : (string | number)[][] >['moe', 30] : (string | number)[] >['larry', 40] : (string | number)[] >['curly', 50] : (string | number)[] _.indexOf([1, 2, 3], 2); >_.indexOf([1, 2, 3], 2) : number >_.indexOf : (list: T[], value: T, isSorted?: boolean) => number >_ : Underscore.Static >indexOf : (list: T[], value: T, isSorted?: boolean) => number >[1, 2, 3] : number[] _.lastIndexOf([1, 2, 3, 1, 2, 3], 2); >_.lastIndexOf([1, 2, 3, 1, 2, 3], 2) : number >_.lastIndexOf : (list: T[], value: T, fromIndex?: number) => number >_ : Underscore.Static >lastIndexOf : (list: T[], value: T, fromIndex?: number) => number >[1, 2, 3, 1, 2, 3] : number[] _.sortedIndex([10, 20, 30, 40, 50], 35); >_.sortedIndex([10, 20, 30, 40, 50], 35) : number >_.sortedIndex : { (list: T[], obj: T, propertyName: string): number; (list: T[], obj: T, iterator?: Iterator, context?: any): number; } >_ : Underscore.Static >sortedIndex : { (list: T[], obj: T, propertyName: string): number; (list: T[], obj: T, iterator?: Iterator, context?: any): number; } >[10, 20, 30, 40, 50] : number[] _.range(10); >_.range(10) : number[] >_.range : { (stop: number): number[]; (start: number, stop: number, step?: number): number[]; } >_ : Underscore.Static >range : { (stop: number): number[]; (start: number, stop: number, step?: number): number[]; } _.range(1, 11); >_.range(1, 11) : number[] >_.range : { (stop: number): number[]; (start: number, stop: number, step?: number): number[]; } >_ : Underscore.Static >range : { (stop: number): number[]; (start: number, stop: number, step?: number): number[]; } _.range(0, 30, 5); >_.range(0, 30, 5) : number[] >_.range : { (stop: number): number[]; (start: number, stop: number, step?: number): number[]; } >_ : Underscore.Static >range : { (stop: number): number[]; (start: number, stop: number, step?: number): number[]; } _.range(0, 30, 5); >_.range(0, 30, 5) : number[] >_.range : { (stop: number): number[]; (start: number, stop: number, step?: number): number[]; } >_ : Underscore.Static >range : { (stop: number): number[]; (start: number, stop: number, step?: number): number[]; } _.range(0); >_.range(0) : number[] >_.range : { (stop: number): number[]; (start: number, stop: number, step?: number): number[]; } >_ : Underscore.Static >range : { (stop: number): number[]; (start: number, stop: number, step?: number): number[]; } /////////////////////////////////////////////////////////////////////////////////////// var func = function (greeting) { return greeting + ': ' + this.name }; >func : (greeting: any) => string >function (greeting) { return greeting + ': ' + this.name } : (greeting: any) => string >greeting : any >greeting + ': ' + this.name : string >greeting + ': ' : string >greeting : any >this.name : any >this : any >name : any // need a second var otherwise typescript thinks func signature is the above func type, // instead of the newly returned _bind => func type. var func2 = _.bind(func, { name: 'moe' }, 'hi'); >func2 : Function >_.bind(func, { name: 'moe' }, 'hi') : Function >_.bind : { (func: T, object: any): T; (func: Function, object: any, ...args: any[]): Function; } >_ : Underscore.Static >bind : { (func: T, object: any): T; (func: Function, object: any, ...args: any[]): Function; } >func : (greeting: any) => string >{ name: 'moe' } : { name: string; } >name : string func2(); >func2() : any >func2 : Function var buttonView = { >buttonView : { label: string; onClick: () => void; onHover: () => void; } >{ label: 'underscore', onClick: function () { alert('clicked: ' + this.label); }, onHover: function () { alert('hovering: ' + this.label); }} : { label: string; onClick: () => void; onHover: () => void; } label: 'underscore', >label : string onClick: function () { alert('clicked: ' + this.label); }, >onClick : () => void >function () { alert('clicked: ' + this.label); } : () => void >alert('clicked: ' + this.label) : void >alert : (x: string) => void >'clicked: ' + this.label : string >this.label : any >this : any >label : any onHover: function () { alert('hovering: ' + this.label); } >onHover : () => void >function () { alert('hovering: ' + this.label); } : () => void >alert('hovering: ' + this.label) : void >alert : (x: string) => void >'hovering: ' + this.label : string >this.label : any >this : any >label : any }; _.bindAll(buttonView); >_.bindAll(buttonView) : { label: string; onClick: () => void; onHover: () => void; } >_.bindAll : (object: T, ...methodNames: string[]) => T >_ : Underscore.Static >bindAll : (object: T, ...methodNames: string[]) => T >buttonView : { label: string; onClick: () => void; onHover: () => void; } $('#underscore_button').bind('click', buttonView.onClick); >$('#underscore_button').bind('click', buttonView.onClick) : any >$('#underscore_button').bind : any >$('#underscore_button') : any >$ : any >bind : any >buttonView.onClick : () => void >buttonView : { label: string; onClick: () => void; onHover: () => void; } >onClick : () => void var fibonacci = _.memoize(function (n) { >fibonacci : (n: any) => any >_.memoize(function (n) { return n < 2 ? n : fibonacci(n - 1) + fibonacci(n - 2);}) : (n: any) => any >_.memoize : (func: T, hashFunction?: Function) => T >_ : Underscore.Static >memoize : (func: T, hashFunction?: Function) => T >function (n) { return n < 2 ? n : fibonacci(n - 1) + fibonacci(n - 2);} : (n: any) => any >n : any return n < 2 ? n : fibonacci(n - 1) + fibonacci(n - 2); >n < 2 ? n : fibonacci(n - 1) + fibonacci(n - 2) : any >n < 2 : boolean >n : any >n : any >fibonacci(n - 1) + fibonacci(n - 2) : any >fibonacci(n - 1) : any >fibonacci : (n: any) => any >n - 1 : number >n : any >fibonacci(n - 2) : any >fibonacci : (n: any) => any >n - 2 : number >n : any }); var log = _.bind((message?: string, ...rest: string[]) => { }, Date); >log : (message?: string, ...rest: string[]) => void >_.bind((message?: string, ...rest: string[]) => { }, Date) : (message?: string, ...rest: string[]) => void >_.bind : { (func: T, object: any): T; (func: Function, object: any, ...args: any[]): Function; } >_ : Underscore.Static >bind : { (func: T, object: any): T; (func: Function, object: any, ...args: any[]): Function; } >(message?: string, ...rest: string[]) => { } : (message?: string, ...rest: string[]) => void >message : string >rest : string[] >Date : DateConstructor _.delay(log, 1000, 'logged later'); >_.delay(log, 1000, 'logged later') : number >_.delay : (func: Function, wait: number, ...args: any[]) => number >_ : Underscore.Static >delay : (func: Function, wait: number, ...args: any[]) => number >log : (message?: string, ...rest: string[]) => void _.defer(function () { alert('deferred'); }); >_.defer(function () { alert('deferred'); }) : number >_.defer : (func: Function, ...args: any[]) => number >_ : Underscore.Static >defer : (func: Function, ...args: any[]) => number >function () { alert('deferred'); } : () => void >alert('deferred') : void >alert : (x: string) => void var updatePosition = () => alert('updating position...'); >updatePosition : () => void >() => alert('updating position...') : () => void >alert('updating position...') : void >alert : (x: string) => void var throttled = _.throttle(updatePosition, 100); >throttled : () => void >_.throttle(updatePosition, 100) : () => void >_.throttle : (func: T, wait: number) => T >_ : Underscore.Static >throttle : (func: T, wait: number) => T >updatePosition : () => void $(null).scroll(throttled); >$(null).scroll(throttled) : any >$(null).scroll : any >$(null) : any >$ : any >scroll : any >throttled : () => void var calculateLayout = () => alert('calculating layout...'); >calculateLayout : () => void >() => alert('calculating layout...') : () => void >alert('calculating layout...') : void >alert : (x: string) => void var lazyLayout = _.debounce(calculateLayout, 300); >lazyLayout : () => void >_.debounce(calculateLayout, 300) : () => void >_.debounce : (func: T, wait: number, immediate?: boolean) => T >_ : Underscore.Static >debounce : (func: T, wait: number, immediate?: boolean) => T >calculateLayout : () => void $(null).resize(lazyLayout); >$(null).resize(lazyLayout) : any >$(null).resize : any >$(null) : any >$ : any >resize : any >lazyLayout : () => void var createApplication = () => alert('creating application...'); >createApplication : () => void >() => alert('creating application...') : () => void >alert('creating application...') : void >alert : (x: string) => void var initialize = _.once(createApplication); >initialize : () => void >_.once(createApplication) : () => void >_.once : (func: T) => T >_ : Underscore.Static >once : (func: T) => T >createApplication : () => void initialize(); >initialize() : void >initialize : () => void initialize(); >initialize() : void >initialize : () => void var notes: any[]; >notes : any[] var render = () => alert("rendering..."); >render : () => void >() => alert("rendering...") : () => void >alert("rendering...") : void >alert : (x: string) => void var renderNotes = _.after(notes.length, render); >renderNotes : () => void >_.after(notes.length, render) : () => void >_.after : (count: number, func: T) => T >_ : Underscore.Static >after : (count: number, func: T) => T >notes.length : number >notes : any[] >length : number >render : () => void _.each(notes, (note) => note.asyncSave({ success: renderNotes })); >_.each(notes, (note) => note.asyncSave({ success: renderNotes })) : void >_.each : { (list: T[], iterator: Iterator, context?: any): void; (list: Dictionary, iterator: Iterator, context?: any): void; } >_ : Underscore.Static >each : { (list: T[], iterator: Iterator, context?: any): void; (list: Dictionary, iterator: Iterator, context?: any): void; } >notes : any[] >(note) => note.asyncSave({ success: renderNotes }) : (note: any) => any >note : any >note.asyncSave({ success: renderNotes }) : any >note.asyncSave : any >note : any >asyncSave : any >{ success: renderNotes } : { success: () => void; } >success : () => void >renderNotes : () => void var hello = function (name) { return "hello: " + name; }; >hello : (name: any) => string >function (name) { return "hello: " + name; } : (name: any) => string >name : any >"hello: " + name : string >name : any hello = _.wrap(hello, (func, arg) => { return "before, " + func(arg) + ", after"; }); >hello = _.wrap(hello, (func, arg) => { return "before, " + func(arg) + ", after"; }) : (name: any) => string >hello : (name: any) => string >_.wrap(hello, (func, arg) => { return "before, " + func(arg) + ", after"; }) : (name: any) => string >_.wrap : (func: T, wrapper: (func: T, ...args: any[]) => any) => T >_ : Underscore.Static >wrap : (func: T, wrapper: (func: T, ...args: any[]) => any) => T >hello : (name: any) => string >(func, arg) => { return "before, " + func(arg) + ", after"; } : (func: (name: any) => string, arg: any) => string >func : (name: any) => string >arg : any >"before, " + func(arg) + ", after" : string >"before, " + func(arg) : string >func(arg) : string >func : (name: any) => string >arg : any hello("moe"); >hello("moe") : string >hello : (name: any) => string var greet = function (name) { return "hi: " + name; }; >greet : (name: any) => string >function (name) { return "hi: " + name; } : (name: any) => string >name : any >"hi: " + name : string >name : any var exclaim = function (statement) { return statement + "!"; }; >exclaim : (statement: any) => string >function (statement) { return statement + "!"; } : (statement: any) => string >statement : any >statement + "!" : string >statement : any var welcome = _.compose(exclaim, greet); >welcome : Function >_.compose(exclaim, greet) : Function >_.compose : (...funcs: Function[]) => Function >_ : Underscore.Static >compose : (...funcs: Function[]) => Function >exclaim : (statement: any) => string >greet : (name: any) => string welcome('moe'); >welcome('moe') : any >welcome : Function /////////////////////////////////////////////////////////////////////////////////////// _.keys({ one: 1, two: 2, three: 3 }); >_.keys({ one: 1, two: 2, three: 3 }) : string[] >_.keys : (object: any) => string[] >_ : Underscore.Static >keys : (object: any) => string[] >{ one: 1, two: 2, three: 3 } : { one: number; two: number; three: number; } >one : number >two : number >three : number _.values({ one: 1, two: 2, three: 3 }); >_.values({ one: 1, two: 2, three: 3 }) : any[] >_.values : (object: any) => any[] >_ : Underscore.Static >values : (object: any) => any[] >{ one: 1, two: 2, three: 3 } : { one: number; two: number; three: number; } >one : number >two : number >three : number _.pairs({ one: 1, two: 2, three: 3 }); >_.pairs({ one: 1, two: 2, three: 3 }) : any[][] >_.pairs : (object: any) => any[][] >_ : Underscore.Static >pairs : (object: any) => any[][] >{ one: 1, two: 2, three: 3 } : { one: number; two: number; three: number; } >one : number >two : number >three : number _.invert({ Moe: "Moses", Larry: "Louis", Curly: "Jerome" }); >_.invert({ Moe: "Moses", Larry: "Louis", Curly: "Jerome" }) : any >_.invert : (object: any) => any >_ : Underscore.Static >invert : (object: any) => any >{ Moe: "Moses", Larry: "Louis", Curly: "Jerome" } : { Moe: string; Larry: string; Curly: string; } >Moe : string >Larry : string >Curly : string _.functions(_); >_.functions(_) : string[] >_.functions : (object: any) => string[] >_ : Underscore.Static >functions : (object: any) => string[] >_ : Underscore.Static _.extend({ name: 'moe' }, { age: 50 }); >_.extend({ name: 'moe' }, { age: 50 }) : { name: string; } >_.extend : (destination: T, ...sources: any[]) => T >_ : Underscore.Static >extend : (destination: T, ...sources: any[]) => T >{ name: 'moe' } : { name: string; } >name : string >{ age: 50 } : { age: number; } >age : number _.pick({ name: 'moe', age: 50, userid: 'moe1' }, 'name', 'age'); >_.pick({ name: 'moe', age: 50, userid: 'moe1' }, 'name', 'age') : { name: string; age: number; userid: string; } >_.pick : (object: T, ...keys: string[]) => T >_ : Underscore.Static >pick : (object: T, ...keys: string[]) => T >{ name: 'moe', age: 50, userid: 'moe1' } : { name: string; age: number; userid: string; } >name : string >age : number >userid : string _.omit({ name: 'moe', age: 50, userid: 'moe1' }, 'userid'); >_.omit({ name: 'moe', age: 50, userid: 'moe1' }, 'userid') : { name: string; age: number; userid: string; } >_.omit : (object: T, ...keys: string[]) => T >_ : Underscore.Static >omit : (object: T, ...keys: string[]) => T >{ name: 'moe', age: 50, userid: 'moe1' } : { name: string; age: number; userid: string; } >name : string >age : number >userid : string var iceCream = { flavor: "chocolate" }; >iceCream : { flavor: string; } >{ flavor: "chocolate" } : { flavor: string; } >flavor : string _.defaults(iceCream, { flavor: "vanilla", sprinkles: "lots" }); >_.defaults(iceCream, { flavor: "vanilla", sprinkles: "lots" }) : { flavor: string; } >_.defaults : (object: T, ...defaults: any[]) => T >_ : Underscore.Static >defaults : (object: T, ...defaults: any[]) => T >iceCream : { flavor: string; } >{ flavor: "vanilla", sprinkles: "lots" } : { flavor: string; sprinkles: string; } >flavor : string >sprinkles : string _.clone({ name: 'moe' }); >_.clone({ name: 'moe' }) : { name: string; } >_.clone : (object: T) => T >_ : Underscore.Static >clone : (object: T) => T >{ name: 'moe' } : { name: string; } >name : string _.chain([1, 2, 3, 200]) >_.chain([1, 2, 3, 200]) .filter(function (num) { return num % 2 == 0; }) .tap(alert) .map(function (num) { return num * num }) .value() : number[] >_.chain([1, 2, 3, 200]) .filter(function (num) { return num % 2 == 0; }) .tap(alert) .map(function (num) { return num * num }) .value : () => number[] >_.chain([1, 2, 3, 200]) .filter(function (num) { return num % 2 == 0; }) .tap(alert) .map(function (num) { return num * num }) : Underscore.ChainedArray >_.chain([1, 2, 3, 200]) .filter(function (num) { return num % 2 == 0; }) .tap(alert) .map : (iterator: Iterator, context?: any) => Underscore.ChainedArray >_.chain([1, 2, 3, 200]) .filter(function (num) { return num % 2 == 0; }) .tap(alert) : Underscore.ChainedArray >_.chain([1, 2, 3, 200]) .filter(function (num) { return num % 2 == 0; }) .tap : (interceptor: (object: number[]) => void) => Underscore.ChainedArray >_.chain([1, 2, 3, 200]) .filter(function (num) { return num % 2 == 0; }) : Underscore.ChainedArray >_.chain([1, 2, 3, 200]) .filter : (iterator: Iterator, context?: any) => Underscore.ChainedArray >_.chain([1, 2, 3, 200]) : Underscore.ChainedArray >_.chain : { (list: T[]): Underscore.ChainedArray; (list: Dictionary): Underscore.ChainedDictionary; (obj: T): Underscore.ChainedObject; } >_ : Underscore.Static >chain : { (list: T[]): Underscore.ChainedArray; (list: Dictionary): Underscore.ChainedDictionary; (obj: T): Underscore.ChainedObject; } >[1, 2, 3, 200] : number[] .filter(function (num) { return num % 2 == 0; }) >filter : (iterator: Iterator, context?: any) => Underscore.ChainedArray >function (num) { return num % 2 == 0; } : (num: number) => boolean >num : number >num % 2 == 0 : boolean >num % 2 : number >num : number .tap(alert) >tap : (interceptor: (object: number[]) => void) => Underscore.ChainedArray >alert : any >alert : (x: string) => void .map(function (num) { return num * num }) >map : (iterator: Iterator, context?: any) => Underscore.ChainedArray >function (num) { return num * num } : (num: number) => number >num : number >num * num : number >num : number >num : number .value(); >value : () => number[] _.has({ a: 1, b: 2, c: 3 }, "b"); >_.has({ a: 1, b: 2, c: 3 }, "b") : boolean >_.has : (object: any, key: string) => boolean >_ : Underscore.Static >has : (object: any, key: string) => boolean >{ a: 1, b: 2, c: 3 } : { a: number; b: number; c: number; } >a : number >b : number >c : number var moe = { name: 'moe', luckyNumbers: [13, 27, 34] }; >moe : { name: string; luckyNumbers: number[]; } >{ name: 'moe', luckyNumbers: [13, 27, 34] } : { name: string; luckyNumbers: number[]; } >name : string >luckyNumbers : number[] >[13, 27, 34] : number[] var clone = { name: 'moe', luckyNumbers: [13, 27, 34] }; >clone : { name: string; luckyNumbers: number[]; } >{ name: 'moe', luckyNumbers: [13, 27, 34] } : { name: string; luckyNumbers: number[]; } >name : string >luckyNumbers : number[] >[13, 27, 34] : number[] moe == clone; >moe == clone : boolean >moe : { name: string; luckyNumbers: number[]; } >clone : { name: string; luckyNumbers: number[]; } _.isEqual(moe, clone); >_.isEqual(moe, clone) : boolean >_.isEqual : (object: T, other: T) => boolean >_ : Underscore.Static >isEqual : (object: T, other: T) => boolean >moe : { name: string; luckyNumbers: number[]; } >clone : { name: string; luckyNumbers: number[]; } _.isEmpty([1, 2, 3]); >_.isEmpty([1, 2, 3]) : boolean >_.isEmpty : (object: any) => boolean >_ : Underscore.Static >isEmpty : (object: any) => boolean >[1, 2, 3] : number[] _.isEmpty({}); >_.isEmpty({}) : boolean >_.isEmpty : (object: any) => boolean >_ : Underscore.Static >isEmpty : (object: any) => boolean >{} : {} _.isElement($('body')[0]); >_.isElement($('body')[0]) : boolean >_.isElement : (object: any) => boolean >_ : Underscore.Static >isElement : (object: any) => boolean >$('body')[0] : any >$('body') : any >$ : any (function () { return _.isArray(arguments); })(); >(function () { return _.isArray(arguments); })() : boolean >(function () { return _.isArray(arguments); }) : () => boolean >function () { return _.isArray(arguments); } : () => boolean >_.isArray(arguments) : boolean >_.isArray : (object: any) => boolean >_ : Underscore.Static >isArray : (object: any) => boolean >arguments : IArguments _.isArray([1, 2, 3]); >_.isArray([1, 2, 3]) : boolean >_.isArray : (object: any) => boolean >_ : Underscore.Static >isArray : (object: any) => boolean >[1, 2, 3] : number[] _.isObject({}); >_.isObject({}) : boolean >_.isObject : (value: any) => boolean >_ : Underscore.Static >isObject : (value: any) => boolean >{} : {} _.isObject(1); >_.isObject(1) : boolean >_.isObject : (value: any) => boolean >_ : Underscore.Static >isObject : (value: any) => boolean // (() => { return _.isArguments(arguments); })(1, 2, 3); _.isArguments([1, 2, 3]); >_.isArguments([1, 2, 3]) : boolean >_.isArguments : (object: any) => boolean >_ : Underscore.Static >isArguments : (object: any) => boolean >[1, 2, 3] : number[] _.isFunction(alert); >_.isFunction(alert) : boolean >_.isFunction : (object: any) => boolean >_ : Underscore.Static >isFunction : (object: any) => boolean >alert : (x: string) => void _.isString("moe"); >_.isString("moe") : boolean >_.isString : (object: any) => boolean >_ : Underscore.Static >isString : (object: any) => boolean _.isNumber(8.4 * 5); >_.isNumber(8.4 * 5) : boolean >_.isNumber : (object: any) => boolean >_ : Underscore.Static >isNumber : (object: any) => boolean >8.4 * 5 : number _.isFinite(-101); >_.isFinite(-101) : boolean >_.isFinite : (object: any) => boolean >_ : Underscore.Static >isFinite : (object: any) => boolean >-101 : number _.isFinite(-Infinity); >_.isFinite(-Infinity) : boolean >_.isFinite : (object: any) => boolean >_ : Underscore.Static >isFinite : (object: any) => boolean >-Infinity : number >Infinity : number _.isBoolean(null); >_.isBoolean(null) : boolean >_.isBoolean : (object: any) => boolean >_ : Underscore.Static >isBoolean : (object: any) => boolean _.isDate(new Date()); >_.isDate(new Date()) : boolean >_.isDate : (object: any) => boolean >_ : Underscore.Static >isDate : (object: any) => boolean >new Date() : Date >Date : DateConstructor _.isRegExp(/moe/); >_.isRegExp(/moe/) : boolean >_.isRegExp : (object: any) => boolean >_ : Underscore.Static >isRegExp : (object: any) => boolean _.isNaN(NaN); >_.isNaN(NaN) : boolean >_.isNaN : (object: any) => boolean >_ : Underscore.Static >isNaN : (object: any) => boolean >NaN : number isNaN(undefined); >isNaN(undefined) : boolean >isNaN : (number: number) => boolean >undefined : undefined _.isNaN(undefined); >_.isNaN(undefined) : boolean >_.isNaN : (object: any) => boolean >_ : Underscore.Static >isNaN : (object: any) => boolean >undefined : undefined _.isNull(null); >_.isNull(null) : boolean >_.isNull : (object: any) => boolean >_ : Underscore.Static >isNull : (object: any) => boolean _.isNull(undefined); >_.isNull(undefined) : boolean >_.isNull : (object: any) => boolean >_ : Underscore.Static >isNull : (object: any) => boolean >undefined : undefined _.isUndefined((null).missingVariable); >_.isUndefined((null).missingVariable) : boolean >_.isUndefined : (value: any) => boolean >_ : Underscore.Static >isUndefined : (value: any) => boolean >(null).missingVariable : any >(null) : any >null : any >missingVariable : any /////////////////////////////////////////////////////////////////////////////////////// var underscore = _.noConflict(); >underscore : Underscore.Static >_.noConflict() : Underscore.Static >_.noConflict : () => Underscore.Static >_ : Underscore.Static >noConflict : () => Underscore.Static var moe2 = { name: 'moe' }; >moe2 : { name: string; } >{ name: 'moe' } : { name: string; } >name : string moe2 === _.identity(moe); >moe2 === _.identity(moe) : boolean >moe2 : { name: string; } >_.identity(moe) : { name: string; luckyNumbers: number[]; } >_.identity : (value: T) => T >_ : Underscore.Static >identity : (value: T) => T >moe : { name: string; luckyNumbers: number[]; } var genie; >genie : any _.times(3, function (n) { genie.grantWishNumber(n); }); >_.times(3, function (n) { genie.grantWishNumber(n); }) : void[] >_.times : (n: number, iterator: Iterator, context?: any) => U[] >_ : Underscore.Static >times : (n: number, iterator: Iterator, context?: any) => U[] >function (n) { genie.grantWishNumber(n); } : (n: number) => void >n : number >genie.grantWishNumber(n) : any >genie.grantWishNumber : any >genie : any >grantWishNumber : any >n : number _.random(0, 100); >_.random(0, 100) : number >_.random : { (max: number): number; (min: number, max: number): number; } >_ : Underscore.Static >random : { (max: number): number; (min: number, max: number): number; } _.mixin({ >_.mixin({ capitalize: function (string) { return string.charAt(0).toUpperCase() + string.substring(1).toLowerCase(); }}) : void >_.mixin : (object: any) => void >_ : Underscore.Static >mixin : (object: any) => void >{ capitalize: function (string) { return string.charAt(0).toUpperCase() + string.substring(1).toLowerCase(); }} : { capitalize: (string: any) => any; } capitalize: function (string) { >capitalize : (string: any) => any >function (string) { return string.charAt(0).toUpperCase() + string.substring(1).toLowerCase(); } : (string: any) => any >string : any return string.charAt(0).toUpperCase() + string.substring(1).toLowerCase(); >string.charAt(0).toUpperCase() + string.substring(1).toLowerCase() : any >string.charAt(0).toUpperCase() : any >string.charAt(0).toUpperCase : any >string.charAt(0) : any >string.charAt : any >string : any >charAt : any >toUpperCase : any >string.substring(1).toLowerCase() : any >string.substring(1).toLowerCase : any >string.substring(1) : any >string.substring : any >string : any >substring : any >toLowerCase : any } }); (_("fabio")).capitalize(); >(_("fabio")).capitalize() : any >(_("fabio")).capitalize : any >(_("fabio")) : any >_("fabio") : any >_("fabio") : Underscore.WrappedObject >_ : Underscore.Static >capitalize : any _.uniqueId('contact_'); >_.uniqueId('contact_') : string >_.uniqueId : { (): number; (prefix: string): string; } >_ : Underscore.Static >uniqueId : { (): number; (prefix: string): string; } _.escape('Curly, Larry & Moe'); >_.escape('Curly, Larry & Moe') : string >_.escape : (s: string) => string >_ : Underscore.Static >escape : (s: string) => string var object = { cheese: 'crumpets', stuff: function () { return 'nonsense'; } }; >object : { cheese: string; stuff: () => string; } >{ cheese: 'crumpets', stuff: function () { return 'nonsense'; } } : { cheese: string; stuff: () => string; } >cheese : string >stuff : () => string >function () { return 'nonsense'; } : () => string _.result(object, 'cheese'); >_.result(object, 'cheese') : any >_.result : (object: any, property: string) => any >_ : Underscore.Static >result : (object: any, property: string) => any >object : { cheese: string; stuff: () => string; } _.result(object, 'stuff'); >_.result(object, 'stuff') : any >_.result : (object: any, property: string) => any >_ : Underscore.Static >result : (object: any, property: string) => any >object : { cheese: string; stuff: () => string; } var compiled = _.template("hello: <%= name %>"); >compiled : (data: any) => string >_.template("hello: <%= name %>") : (data: any) => string >_.template : { (templateString: string): (data: any) => string; (templateString: string, data: any, settings?: Underscore.TemplateSettings): string; } >_ : Underscore.Static >template : { (templateString: string): (data: any) => string; (templateString: string, data: any, settings?: Underscore.TemplateSettings): string; } compiled({ name: 'moe' }); >compiled({ name: 'moe' }) : string >compiled : (data: any) => string >{ name: 'moe' } : { name: string; } >name : string var list2 = "<% _.each(people, function(name) { %>
  • <%= name %>
  • <% }); %>"; >list2 : string _.template(list2, { people: ['moe', 'curly', 'larry'] }); >_.template(list2, { people: ['moe', 'curly', 'larry'] }) : string >_.template : { (templateString: string): (data: any) => string; (templateString: string, data: any, settings?: Underscore.TemplateSettings): string; } >_ : Underscore.Static >template : { (templateString: string): (data: any) => string; (templateString: string, data: any, settings?: Underscore.TemplateSettings): string; } >list2 : string >{ people: ['moe', 'curly', 'larry'] } : { people: string[]; } >people : string[] >['moe', 'curly', 'larry'] : string[] var template = _.template("<%- value %>"); >template : (data: any) => string >_.template("<%- value %>") : (data: any) => string >_.template : { (templateString: string): (data: any) => string; (templateString: string, data: any, settings?: Underscore.TemplateSettings): string; } >_ : Underscore.Static >template : { (templateString: string): (data: any) => string; (templateString: string, data: any, settings?: Underscore.TemplateSettings): string; } template({ value: '