Giter Club home page Giter Club logo

Comments (13)

brandon93s avatar brandon93s commented on August 28, 2024 3

If we're seeking readability, how about a not modifier?

is.not.undefined
is.not.null
is.not.arrayLike

Etc...

from is.

sindresorhus avatar sindresorhus commented on August 28, 2024 2

The is.undefined() method is clear, since JS has the undefined primitive, but is.defined() could in my mind both mean that it's defined, as in not undefined, but also defined, as in not null or undefined. So I don't really find it clearer than !is.undefined() which negates the name of the primitive.

@ltetzlaff @SamVerschueren @brandon93s Thoughts?

from is.

sindresorhus avatar sindresorhus commented on August 28, 2024

What would be the expected behavior for is.defined(null)?

from is.

rarkins avatar rarkins commented on August 28, 2024

To be true. Essentially same as expect(foo).toBeDefined() when testing

from is.

rarkins avatar rarkins commented on August 28, 2024

Thanks for considering it. I agree that there’s definitely some ambiguity, but on the other hand:

  • there is also ambiguity in other functions in this package (eg you probably need to read the docs to know what isArrayLike means)
  • using “defined” to mean “!undefined” has some precedent as I mentioned, with expect

I found that the “double negative” of “not undefined” still makes me pause and re-read source code so was hoping to streamline it.

from is.

brandon93s avatar brandon93s commented on August 28, 2024

I think it'd be too easy to accidentally misuse an is.defined method regardless of which implementation we choose. Being "defined" doesn't seem to have a concrete definition - at least not amongst the JS community.

falsey truthy nullOrUndefinrd already cover the other use cases, so this would just be a negated version of an existing check which in general I'd like to avoid to minimize the API surface.

"Array-like" isn't the most well known term, but it does have a concrete definition in the community. It's used in the slice documents, for example.

from is.

rarkins avatar rarkins commented on August 28, 2024

@brandon93s I like the idea of .not, if it's agreed that defined is too ambiguous.

from is.

Hoishin avatar Hoishin commented on August 28, 2024

is.defined() could in my mind both mean that it's defined, as in not undefined, but also defined, as in not null or undefined.

Also note that undefined is a defined variable. So here is another ambiguity where is.defined() always returns true unless the given variable does not exist

from is.

gioragutt avatar gioragutt commented on August 28, 2024

@brandon93s this seems like the cleanest solution. I support it. At the same time, it is an answer to all use cases where you need to check a negative of an existing predicate.

from is.

ltetzlaff avatar ltetzlaff commented on August 28, 2024

I'd probably not use it myself and just go with the good ol' !is.nullOrUndefined() or so but I see the point of the not function for some people I guess, at least given the nature of this repo.

Btw ArrayLike is also defined in lib.d.ts as

interface ArrayLike<T> {
    readonly length: number;
    readonly [n: number]: T;
}

and used pretty widely when "softly" referring to Enumerables but not Iterables or the like.

from is.

sindresorhus avatar sindresorhus commented on August 28, 2024

I'm going to pass on this as it's too ambiguous.

As for is.not.string, I'm not sure it makes sense, since you can just use !is.string. If someone feels strongly for is.not, convince me otherwise in a new issue ;)

from is.

bartzy avatar bartzy commented on August 28, 2024

@sindresorhus How do you assert that a value is defined? ! won't work for assertions, I think?

from is.

sindresorhus avatar sindresorhus commented on August 28, 2024

@bartzy Assertions did not exist when this issue was discussed. It's generally better to open a new issue than to comment on a very old closed issue.

from is.

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.