diff --git a/lodash/lodash-tests.ts b/lodash/lodash-tests.ts
index a869fd0a9b..400d8664ac 100644
--- a/lodash/lodash-tests.ts
+++ b/lodash/lodash-tests.ts
@@ -1,6 +1,6 @@
///
-declare var $, jQuery;
+declare var $: any, jQuery: any;
interface IFoodOrganic {
name: string;
@@ -72,13 +72,13 @@ var keys: IKey[] = [
{ 'dir': 'right', 'code': 100 }
];
-function Dog(name) {
- this.name = name;
-}
+class Dog {
+ constructor(public name: string) {}
-Dog.prototype.bark = function() {
- console.log('Woof, woof!');
-};
+ public bark() {
+ console.log('Woof, woof!');
+ }
+}
var result : any;
@@ -166,7 +166,7 @@ result = _.findIndex(['apple', 'banana', 'beet'], function(f) {
result = _.findIndex(['apple', 'banana', 'beet'], 'apple');
result = _.findIndex([{ food: 'apple' }, { food: 'banana' }, { food: 'beet' }], { food: 'apple'});
-result = _.findLastIndex(['apple', 'banana', 'beet'], function(f) {
+result = _.findLastIndex(['apple', 'banana', 'beet'], function(f: string) {
return /^b/.test(f);
});
result = _.findLastIndex(['apple', 'banana', 'beet'], 'apple');
@@ -240,7 +240,7 @@ result = _.range(0, -10, -1);
result = _.range(1, 4, 0);
result = _.range(0);
-result = _.remove([1, 2, 3, 4, 5, 6], function(num) { return num % 2 == 0; });
+result = _.remove([1, 2, 3, 4, 5, 6], function(num: number) { return num % 2 == 0; });
result = _.remove(foodsOrganic, 'organic');
result = _.remove(foodsType, { 'type': 'vegetable'});
@@ -409,32 +409,32 @@ result = _.min(stoogesAges, 'age');
result = _.pluck(stoogesAges, 'name');
-result = _.reduce([1, 2, 3], function(sum, num) {
+result = _.reduce([1, 2, 3], function(sum: number, num: number) {
return sum + num;
});
-result = _.reduce({ 'a': 1, 'b': 2, 'c': 3 }, function(result, num, key) {
- result[key] = num * 3;
- return result;
+result = _.reduce({ 'a': 1, 'b': 2, 'c': 3 }, function(r: any, num: number, key: string) {
+ r[key] = num * 3;
+ return r;
}, {});
- result = _.foldl([1, 2, 3], function(sum, num) {
+ result = _.foldl([1, 2, 3], function(sum: number, num: number) {
return sum + num;
});
- result = _.foldl({ 'a': 1, 'b': 2, 'c': 3 }, function(result, num, key) {
- result[key] = num * 3;
- return result;
+ result = _.foldl({ 'a': 1, 'b': 2, 'c': 3 }, function(r: any, num: number, key: string) {
+ r[key] = num * 3;
+ return r;
}, {});
- result = _.inject([1, 2, 3], function(sum, num) {
+ result = _.inject([1, 2, 3], function(sum: number, num: number) {
return sum + num;
});
- result = _.inject({ 'a': 1, 'b': 2, 'c': 3 }, function(result, num, key) {
- result[key] = num * 3;
- return result;
+ result = _.inject({ 'a': 1, 'b': 2, 'c': 3 }, function(r: any, num: number, key: string) {
+ r[key] = num * 3;
+ return r;
}, {});
-result = _.reduceRight([[0, 1], [2, 3], [4, 5]], function(a, b) { return a.concat(b); }, []);
- result = _.foldr([[0, 1], [2, 3], [4, 5]], function(a, b) { return a.concat(b); }, []);
+result = _.reduceRight([[0, 1], [2, 3], [4, 5]], function(a: number[], b: number[]) { return a.concat(b); }, []);
+ result = _.foldr([[0, 1], [2, 3], [4, 5]], function(a: number[], b: number[]) { return a.concat(b); }, []);
result = _.reject([1, 2, 3, 4, 5, 6], function(num) { return num % 2 == 0; });
result = _.reject(foodsCombined, 'organic');
@@ -461,7 +461,7 @@ result = _.sortBy([1, 2, 3], function(num) { return Math.sin(num); });
result = _.sortBy([1, 2, 3], function(num) { return this.sin(num); }, Math);
result = _.sortBy(['banana', 'strawberry', 'apple'], 'length');
-(function(a, b, c, d){ return _.toArray(arguments).slice(1); })(1, 2, 3, 4);
+(function(a: any, b: any, c: any, d: any){ return _.toArray(arguments).slice(1); })(1, 2, 3, 4);
result = _.where(stoogesCombined, { 'age': 40 });
result = _.where(stoogesCombined, { 'quotes': ['Poifect!'] });
@@ -470,7 +470,7 @@ result = _.where(stoogesCombined, { 'quotes': ['Poifect!'] }
* Functions *
*************/
var saves = ['profile', 'settings'];
-var asyncSave = (obj) => obj.done();
+var asyncSave = (obj: any) => obj.done();
var done: Function;
done = _.after(saves.length, function() {
@@ -489,7 +489,7 @@ _.forEach(saves, function(type) {
asyncSave({ 'type': type, 'complete': done });
});
-var funcBind = function (greeting) { return greeting + ' ' + this.name };
+var funcBind = function (greeting: string) { return greeting + ' ' + this.name };
var funcBind2: () => any = _.bind(funcBind, { 'name': 'moe' }, 'hi');
funcBind2();
@@ -509,7 +509,7 @@ jQuery('#docs').on('click', view.onClick);
var objectBindKey = {
'name': 'moe',
- 'greet': function(greeting) {
+ 'greet': function(greeting: string) {
return greeting + ' ' + this.name;
}
};
@@ -530,12 +530,12 @@ var realNameMap = {
'curly': 'jerome'
};
-var format = function(name) {
+var format = function(name: string) {
name = realNameMap[name.toLowerCase()] || name;
return name.charAt(0).toUpperCase() + name.slice(1).toLowerCase();
};
-var greet = function(formatted) {
+var greet = function(formatted: string) {
return 'Hiya ' + formatted + '!';
};
@@ -556,7 +556,7 @@ result = <_.LoDashObjectWrapper>_(function(a, b, c) {
console.log(a + b + c);
}).curry();
-declare var source;
+declare var source: any;
result = _.debounce(function() {}, 150);
jQuery('#postbox').on('click', _.debounce(function() {}, 300, {
@@ -595,7 +595,7 @@ var data = {
'curly': { 'name': 'curly', 'age': 60 }
};
-var stooge = _.memoize(function(name) { return data[name]; }, _.identity);
+var stooge = _.memoize(function(name: string) { return data[name]; }, _.identity);
stooge('curly');
stooge['cache']['curly'].name = 'jerome';
@@ -605,7 +605,7 @@ var initialize = _.once(function(){ });
initialize();
initialize();
-var greetPartial = function(greeting, name) { return greeting + ' ' + name; };
+var greetPartial = function(greeting: string, name: string) { return greeting + ' ' + name; };
var hi = _.partial(greetPartial, 'hi');
hi('moe');
@@ -625,7 +625,7 @@ jQuery('.interactive').on('click', _.throttle(function() { }, 300000, {
'trailing': false
}));
-var helloWrap = function(name) { return 'hello ' + name; };
+var helloWrap = function(name: string) { return 'hello ' + name; };
var helloWrap2 = _.wrap(helloWrap, function(func) {
return 'before, ' + func('moe') + ', after';
});
@@ -635,22 +635,22 @@ helloWrap2();
* Objects *
***********/
result = _.assign({ 'name': 'moe' }, { 'age': 40 });
-result = _.assign({ 'name': 'moe' }, { 'age': 40 }, function(a, b) {
+result = _.assign({ 'name': 'moe' }, { 'age': 40 }, function(a: any, b: any) {
return typeof a == 'undefined' ? b : a;
});
result = <_.LoDashObjectWrapper>_({ 'name': 'moe' }).assign({ 'age': 40 });
-result = <_.LoDashObjectWrapper>_({ 'name': 'moe' }).assign({ 'age': 40 }, function(a, b) {
+result = <_.LoDashObjectWrapper>_({ 'name': 'moe' }).assign({ 'age': 40 }, function(a: any, b: any) {
return typeof a == 'undefined' ? b : a;
});
result = _.extend({ 'name': 'moe' }, { 'age': 40 });
- result = _.extend({ 'name': 'moe' }, { 'age': 40 }, function(a, b) {
+ result = _.extend({ 'name': 'moe' }, { 'age': 40 }, function(a: any, b: any) {
return typeof a == 'undefined' ? b : a;
});
result = <_.LoDashObjectWrapper>_({ 'name': 'moe' }).extend({ 'age': 40 });
- result = <_.LoDashObjectWrapper>_({ 'name': 'moe' }).extend({ 'age': 40 }, function(a, b) {
+ result = <_.LoDashObjectWrapper>_({ 'name': 'moe' }).extend({ 'age': 40 }, function(a: any, b: any) {
return typeof a == 'undefined' ? b : a;
});
@@ -771,9 +771,11 @@ result = _.isObject({});
result = _.isObject([1, 2, 3]);
result = _.isObject(1);
-function Stooge(name, age) {
- this.name = name;
- this.age = age;
+class Stooge {
+ constructor(
+ public name: string,
+ public age: number
+ ) {}
}
result = _.isPlainObject(new Stooge('moe', 40));
@@ -814,7 +816,7 @@ var mergeOtherFood = {
'vegetables': ['carrot']
};
-result = _.merge(mergeFood, mergeOtherFood, function(a, b) {
+result = _.merge(mergeFood, mergeOtherFood, function(a: any, b: any) {
return _.isArray(a) ? a.concat(b) : undefined;
});
@@ -832,16 +834,16 @@ result = _.pick({ 'name': 'moe', '_userid': 'moe1' }, function(value, key)
return key.charAt(0) != '_';
});
-result = _.transform([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], function(result, num) {
+result = _.transform([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], function(r: any, num: number) {
num *= num;
if (num % 2) {
- return result.push(num) < 3;
+ return r.push(num) < 3;
}
});
// → [1, 9, 25]
-result = _.transform({ 'a': 1, 'b': 2, 'c': 3 }, function(result, num, key) {
- result[key] = num * 3;
+result = _.transform({ 'a': 1, 'b': 2, 'c': 3 }, function(r: any, num: number, key: string) {
+ r[key] = num * 3;
});
result = _.values({ 'one': 1, 'two': 2, 'three': 3 });
@@ -898,10 +900,16 @@ result = <_.TemplateExecutor>_.template('hello <%= name %>', null, { 'sourceURL'
result = <_.TemplateExecutor>_.template('hi <%= data.name %>!', null, { 'variable': 'data' });
result = (<_.TemplateExecutor>result).source;
-function Mage() {
- this.castSpell = (n:number) => n;
- this.cast = (n: number) => n;
-};
+class Mage {
+ public castSpell(n: number) {
+ return n;
+ }
+
+ public cast(n: number) {
+ return n;
+ }
+}
+
var mage = new Mage();
result = _.times(3, _.partial(_.random, 1, 6));
result = _.times(3, function(n: number) { mage.castSpell(n); });
diff --git a/lodash/lodash.d.ts b/lodash/lodash.d.ts
index f8af63ad24..98c7f11cc6 100644
--- a/lodash/lodash.d.ts
+++ b/lodash/lodash.d.ts
@@ -4028,7 +4028,7 @@ declare module _ {
}
interface MemoIterator {
- (prev: TResult, curr: T, index: number, list: T[]): TResult;
+ (prev: TResult, curr: T, indexOrKey: any, list?: T[]): TResult;
}
interface Collection { }