Comments (13)
If we're seeking readability, how about a not
modifier?
is.not.undefined
is.not.null
is.not.arrayLike
Etc...
from is.
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.
What would be the expected behavior for is.defined(null)
?
from is.
To be true
. Essentially same as expect(foo).toBeDefined()
when testing
from is.
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.
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.
@brandon93s I like the idea of .not
, if it's agreed that defined
is too ambiguous.
from is.
is.defined()
could in my mind both mean that it's defined, as in notundefined
, but also defined, as in notnull
orundefined
.
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.
@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.
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.
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.
@sindresorhus How do you assert that a value is defined? !
won't work for assertions, I think?
from is.
@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)
- Property 'function' does not exist on type 'typeof is'. HOT 1
- Proposal: is.nonEmptyStringAndNotWhitespace(value) HOT 10
- [v5] Better handling of `NaN`
- test code perf HOT 1
- Can't access default export properties when `moduleResolution: 'NodeNext'` HOT 3
- Add is.renderInReact or is.notRenderInReact HOT 1
- Question: What is the reason Node.js below version 14.16 is not supported? HOT 2
- add type inference to "nonEmptyArray"
- Confused between class_ docs and implementation HOT 1
- How to shorten: `"prop" in obj && obj.prop`
- Improve type narrowing for `nonEmptyArray` HOT 1
- is.numericString type guarding returns `x is string` and messes up typescript HOT 4
- Parcel JS build issue - No Main HOT 1
- v5.4.0 "Cannot find module '@sindresorhus/is' or its corresponding type declarations" HOT 4
- `plainObject` is incompatible with `structuredClone` HOT 2
- Some type guards under assert are not working HOT 1
- directInstanceOf(instance, class) throws error if instance is null or undefined HOT 1
- Struggling to configure jest to compile `is` HOT 1
- is.enumCase method is not a type guard HOT 2
- Typing errors with the isEmptyStringOrWhitespace type guard HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from is.