diff --git a/lodash/lodash-tests.ts b/lodash/lodash-tests.ts index c083edd4c..c5378b5fd 100644 --- a/lodash/lodash-tests.ts +++ b/lodash/lodash-tests.ts @@ -2651,24 +2651,68 @@ result = _.isArguments(any); result = _(1).isArguments(); result = _([]).isArguments(); result = _({}).isArguments(); +{ + let value: IArguments|number = 42; + if (_.isArguments(value)) { + let length: number = value.length; + // compile error + // let i: number = value + 1; + } else { + let i: number = value + 1; + // compile error + // let length: number = value.length; + } +} // _.isArray result = _.isArray(any); result = _(1).isArray(); result = _([]).isArray(); result = _({}).isArray(); +{ + let value: number[]|string = [1, 3, 5]; + if (_.isArray(value)) { + let length: number[] = value.concat(4); + // compile error + // let char: string = value.charAt(0); + } else { + let char: string = value.charAt(0); + // compile error + // let length: number[] = value.concat(4); + } +} // _.isBoolean result = _.isBoolean(any); result = _(1).isBoolean(); result = _([]).isBoolean(); result = _({}).isBoolean(); +{ + let value: number[]|boolean = [1, 3, 5]; + if (_.isBoolean(value)) { + let b: boolean = value; + // compile error + // let length: number = value.length; + } else { + let length: number = value.length; + // compile error + // let b: boolean = value; + } +} // _.isDate result = _.isDate(any); result = _(42).isDate(); result = _([]).isDate(); result = _({}).isDate(); +{ + let value: Date|string = "foo"; + if (_.isDate(value)) { + value.toTimeString(); + } else { + value.charAt(0); + } +} // _.isElement result = _.isElement(any); @@ -2703,6 +2747,14 @@ result = _.isError(any); result = _(1).isError(); result = _([]).isError(); result = _({}).isError(); +{ + let value: Error|string = "error"; + if (_.isError(value)) { + let message: string = value.message; + } else { + let message: string = value; + } +} // _.isFinite result = _.isFinite(any); @@ -2715,6 +2767,14 @@ result = _.isFunction(any); result = _(1).isFunction(); result = _([]).isFunction(); result = _({}).isFunction(); +{ + let value: Function|string = "foo"; + if (_.isFunction(value)) { + value(); + } else { + let result: string = value; + } +} // _.isMatch var testIsMatchCustiomizerFn: (value: any, other: any, indexOrKey: number|string) => boolean; @@ -2736,6 +2796,14 @@ result = _(undefined).isNaN(); // _.isNative result = _.isNative(Array.prototype.push); result = _(Array.prototype.push).isNative(); +{ + let value: Function|string = "foo"; + if (_.isNative(value)) { + value(); + } else { + let result: string = value; + } +} // _.isNull result = _.isNull(any); @@ -2748,6 +2816,14 @@ result = _.isNumber(any); result = _(1).isNumber(); result = _([]).isNumber(); result = _({}).isNumber(); +{ + let value: number|string = "foo"; + if (_.isNumber(value)) { + let result: number = value * 42; + } else { + let result: string = value; + } +} // _.isObject result = _.isObject(any); @@ -2766,12 +2842,29 @@ result = _.isRegExp(any); result = _(1).isRegExp(); result = _([]).isRegExp(); result = _({}).isRegExp(); +{ + let value: RegExp|string = /^foo$/g; + if (_.isRegExp(value)) { + let regex: RegExp = value; + let index: number = value.exec("foo").index; + } else { + let result: string = value; + } +} // _.isString result = _.isString(any); result = _(1).isString(); result = _([]).isString(); result = _({}).isString(); +{ + let value: string|number = "foo"; + if (_.isString(value)) { + let result: string = value; + } else { + let result: number = value * 42; + } +} // _.isTypedArray result = _.isTypedArray([]); diff --git a/lodash/lodash.d.ts b/lodash/lodash.d.ts index 881124328..a0b7eaceb 100644 --- a/lodash/lodash.d.ts +++ b/lodash/lodash.d.ts @@ -6886,7 +6886,7 @@ declare module _ { * @param value The value to check. * @return Returns true if value is correctly classified, else false. */ - isArguments(value?: any): boolean; + isArguments(value?: any): value is IArguments; } interface LoDashImplicitWrapperBase { @@ -6903,7 +6903,7 @@ declare module _ { * @param value The value to check. * @return Returns true if value is correctly classified, else false. **/ - isArray(value?: any): boolean; + isArray(value?: any): value is any[]; } interface LoDashImplicitWrapperBase { @@ -6920,7 +6920,7 @@ declare module _ { * @param value The value to check. * @return Returns true if value is correctly classified, else false. **/ - isBoolean(value?: any): boolean; + isBoolean(value?: any): value is boolean; } interface LoDashImplicitWrapperBase { @@ -6937,7 +6937,7 @@ declare module _ { * @param value The value to check. * @return Returns true if value is correctly classified, else false. **/ - isDate(value?: any): boolean; + isDate(value?: any): value is Date; } interface LoDashImplicitWrapperBase { @@ -7033,7 +7033,7 @@ declare module _ { * @param value The value to check. * @return Returns true if value is an error object, else false. */ - isError(value: any): boolean; + isError(value: any): value is Error; } interface LoDashImplicitWrapperBase { @@ -7051,7 +7051,7 @@ declare module _ { * @param value The value to check. * @return Returns true if value is a finite number, else false. **/ - isFinite(value?: any): boolean; + isFinite(value?: any): value is number; } interface LoDashImplicitWrapperBase { @@ -7068,7 +7068,7 @@ declare module _ { * @param value The value to check. * @return Returns true if value is correctly classified, else false. **/ - isFunction(value?: any): boolean; + isFunction(value?: any): value is Function; } interface LoDashImplicitWrapperBase { @@ -7130,7 +7130,7 @@ declare module _ { * @param value The value to check. * @retrun Returns true if value is a native function, else false. */ - isNative(value: any): boolean; + isNative(value: any): value is Function; } interface LoDashImplicitWrapperBase { @@ -7165,7 +7165,7 @@ declare module _ { * @param value The value to check. * @return Returns true if value is correctly classified, else false. */ - isNumber(value?: any): boolean; + isNumber(value?: any): value is number; } interface LoDashImplicitWrapperBase { @@ -7221,7 +7221,7 @@ declare module _ { * @param value The value to check. * @return Returns true if value is correctly classified, else false. */ - isRegExp(value?: any): boolean; + isRegExp(value?: any): value is RegExp; } interface LoDashImplicitWrapperBase { @@ -7238,7 +7238,7 @@ declare module _ { * @param value The value to check. * @return Returns true if value is correctly classified, else false. **/ - isString(value?: any): boolean; + isString(value?: any): value is string; } interface LoDashImplicitWrapperBase {