Checking whether an array contains a value or another array
Objects

One edge case you didn't test is isIn({property: 'value'}, [{property: 'value'}]). I don't know what you want it to do here, but currently it will return false.

You also did not test what happens when no values are passed in, or just a value. While TypeScript may not agree with not passing values to functions that are asking for them, it seems to still be possible.

And another one: JSON.stringify has it's own quirks


If undefined, a Function, or a Symbol is encountered during conversion it is either omitted (when it is found in an object) or censored to null (when it is found in an array). JSON.stringify can also just return undefined when passing in "pure" values like JSON.stringify(function(){}) or JSON.stringify(undefined).
All Symbol-keyed properties will be completely ignored, even when using the replacer function.
The instances of Date implement the toJSON() function by returning a string (the same as date.toISOString()), thus they are treated as strings.
The numbers Infinity and NaN as well as the object null are all considered as null.
For all the other Object instances (including Map, Set, WeakMap and WeakSet), only their enumerable properties will be serialized.