Merge pull request #7435 from chrootsu/lodash-wrap

lodash: signatures of _.wrap have been changed
This commit is contained in:
Masahiro Wakame
2016-01-10 00:30:46 +09:00
2 changed files with 182 additions and 14 deletions
+83 -5
View File
@@ -5812,11 +5812,89 @@ module TestThrottle {
}
}
var helloWrap = function (name: string) { return 'hello ' + name; };
var helloWrap2 = _.wrap(helloWrap, function (func) {
return 'before, ' + func('moe') + ', after';
});
helloWrap2();
// _.wrap
module TestWrap {
type SampleValue = {a: number; b: string; c: boolean}
type SampleResult = (arg2: number, arg3: string) => boolean;
{
type SampleWrapper = (arg1: SampleValue, arg2: number, arg3: string) => boolean;
let value: SampleValue;
let wrapper: SampleWrapper;
let result: SampleResult;
result = _.wrap<SampleValue, SampleWrapper, SampleResult>(value, wrapper);
result = _.wrap<SampleValue, SampleResult>(value, wrapper);
result = _.wrap<SampleResult>(value, wrapper);
}
{
type SampleWrapper = (arg1: number, arg2: number, arg3: string) => boolean;
let value: number;
let wrapper: SampleWrapper;
let result: _.LoDashImplicitObjectWrapper<SampleResult>;
result = _(value).wrap<SampleWrapper, SampleResult>(wrapper);
result = _(value).wrap<SampleResult>(wrapper);
}
{
type SampleWrapper = (arg1: number[], arg2: number, arg3: string) => boolean;
let value: number[];
let wrapper: SampleWrapper;
let result: _.LoDashImplicitObjectWrapper<SampleResult>;
result = _(value).wrap<SampleWrapper, SampleResult>(wrapper);
result = _(value).wrap<SampleResult>(wrapper);
}
{
type SampleWrapper = (arg1: SampleValue, arg2: number, arg3: string) => boolean;
let value: SampleValue;
let wrapper: SampleWrapper;
let result: _.LoDashImplicitObjectWrapper<SampleResult>;
result = _(value).wrap<SampleWrapper, SampleResult>(wrapper);
result = _(value).wrap<SampleResult>(wrapper);
}
{
type SampleWrapper = (arg1: number, arg2: number, arg3: string) => boolean;
let value: number;
let wrapper: SampleWrapper;
let result: _.LoDashExplicitObjectWrapper<SampleResult>;
result = _(value).chain().wrap<SampleWrapper, SampleResult>(wrapper);
result = _(value).chain().wrap<SampleResult>(wrapper);
}
{
type SampleWrapper = (arg1: number[], arg2: number, arg3: string) => boolean;
let value: number[];
let wrapper: SampleWrapper;
let result: _.LoDashExplicitObjectWrapper<SampleResult>;
result = _(value).chain().wrap<SampleWrapper, SampleResult>(wrapper);
result = _(value).chain().wrap<SampleResult>(wrapper);
}
{
type SampleWrapper = (arg1: SampleValue, arg2: number, arg3: string) => boolean;
let value: SampleValue;
let wrapper: SampleWrapper;
let result: _.LoDashExplicitObjectWrapper<SampleResult>;
result = _(value).chain().wrap<SampleWrapper, SampleResult>(wrapper);
result = _(value).chain().wrap<SampleResult>(wrapper);
}
}
/********
* Lang *
+99 -9
View File
@@ -9614,16 +9614,106 @@ declare module _ {
//_.wrap
interface LoDashStatic {
/**
* Creates a function that provides value to the wrapper function as its first argument.
* Additional arguments provided to the function are appended to those provided to the
* wrapper function. The wrapper is executed with the this binding of the created function.
* @param value The value to wrap.
* @param wrapper The wrapper function.
* @return The new function.
**/
wrap(
* Creates a function that provides value to the wrapper function as its first argument. Any additional
* arguments provided to the function are appended to those provided to the wrapper function. The wrapper is
* invoked with the this binding of the created function.
*
* @param value The value to wrap.
* @param wrapper The wrapper function.
* @return Returns the new function.
*/
wrap<V, W extends Function, R extends Function>(
value: V,
wrapper: W
): R;
/**
* @see _.wrap
*/
wrap<V, R extends Function>(
value: V,
wrapper: Function
): R;
/**
* @see _.wrap
*/
wrap<R extends Function>(
value: any,
wrapper: (func: Function, ...args: any[]) => any): Function;
wrapper: Function
): R;
}
interface LoDashImplicitWrapper<T> {
/**
* @see _.wrap
*/
wrap<W extends Function, R extends Function>(wrapper: W): LoDashImplicitObjectWrapper<R>;
/**
* @see _.wrap
*/
wrap<R extends Function>(wrapper: Function): LoDashImplicitObjectWrapper<R>;
}
interface LoDashImplicitArrayWrapper<T> {
/**
* @see _.wrap
*/
wrap<W extends Function, R extends Function>(wrapper: W): LoDashImplicitObjectWrapper<R>;
/**
* @see _.wrap
*/
wrap<R extends Function>(wrapper: Function): LoDashImplicitObjectWrapper<R>;
}
interface LoDashImplicitObjectWrapper<T> {
/**
* @see _.wrap
*/
wrap<W extends Function, R extends Function>(wrapper: W): LoDashImplicitObjectWrapper<R>;
/**
* @see _.wrap
*/
wrap<R extends Function>(wrapper: Function): LoDashImplicitObjectWrapper<R>;
}
interface LoDashExplicitWrapper<T> {
/**
* @see _.wrap
*/
wrap<W extends Function, R extends Function>(wrapper: W): LoDashExplicitObjectWrapper<R>;
/**
* @see _.wrap
*/
wrap<R extends Function>(wrapper: Function): LoDashExplicitObjectWrapper<R>;
}
interface LoDashExplicitArrayWrapper<T> {
/**
* @see _.wrap
*/
wrap<W extends Function, R extends Function>(wrapper: W): LoDashExplicitObjectWrapper<R>;
/**
* @see _.wrap
*/
wrap<R extends Function>(wrapper: Function): LoDashExplicitObjectWrapper<R>;
}
interface LoDashExplicitObjectWrapper<T> {
/**
* @see _.wrap
*/
wrap<W extends Function, R extends Function>(wrapper: W): LoDashExplicitObjectWrapper<R>;
/**
* @see _.wrap
*/
wrap<R extends Function>(wrapper: Function): LoDashExplicitObjectWrapper<R>;
}
/********