GithubHelp home page GithubHelp logo

Comments (4)

Cowjiang avatar Cowjiang commented on June 11, 2024 1

You can infer the parameter 'obj' to the 'any' type
like this:

const isEmpty = (obj: any) => [Object, Array].includes((obj || {}).constructor) && !Object.entries((obj || {})).length;

from you-dont-need-lodash-underscore.

Cowjiang avatar Cowjiang commented on June 11, 2024 1

Let's see the declaration of 'Array.includes':

interface Array<T> {
    /**
     * Determines whether an array includes a certain element, returning true or false as appropriate.
     * @param searchElement The element to search for.
     * @param fromIndex The position in this array at which to begin searching for searchElement.
     */
    includes(searchElement: T, fromIndex?: number): boolean;
}

And the declaration of 'Object.constructor':

interface Object {
    constructor: Function;
}

And Webstorm show this:

Array<ObjectConstructor | ArrayConstructor>.includes(searchElement: ObjectConstructor | ArrayConstructor, fromIndex?: number): boolean

That means Generics '' was identified as '<ObjectConstructor | ArrayConstructor>', and that's why Webstorm will show the warning 'Argument type Function is not assignable to parameter type ObjectConstructor | ArrayConstructor'.

Umm, this warning doesn't show in VS Code. And if you change the Javascript Version to Flow in Webstorm, it won't show too.

from you-dont-need-lodash-underscore.

straurob avatar straurob commented on June 11, 2024

You can infer the parameter 'obj' to the 'any' type

This seems to be only valid for Typescript, right? Sorry, I forgot to mention that I'm using Vanilla JavaScript.

from you-dont-need-lodash-underscore.

straurob avatar straurob commented on June 11, 2024

I'll check the WebStorm issues if there is something similar. It obviously looks more like a WebStorm thing.

from you-dont-need-lodash-underscore.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.