GithubHelp home page GithubHelp logo

Add `optional` predicate about ow HOT 11 CLOSED

sindresorhus avatar sindresorhus commented on May 19, 2024 2
Add `optional` predicate

from ow.

Comments (11)

sindresorhus avatar sindresorhus commented on May 19, 2024 1

I would prefer ow.optional.string. Maybe we should just release ow without the ability to use optional and see what the community can come up with? Maybe someone has a clever solution.

Have you tried it with TS 2.8? I see they introduced conditional types there: https://blogs.msdn.microsoft.com/typescript/2018/03/15/announcing-typescript-2-8-rc/ I'm not sure it helps at all, but thought I would mention it, just in case.

from ow.

SamVerschueren avatar SamVerschueren commented on May 19, 2024 1

We really need this :D. I have to use the following construct for now which is ugly.

if (foo.bar) {
    ow(foo.bar, ow.string);
}

if (unicorn.rainbow) {
    ow(unicorn.rainbow, ow.string);
}

Would be much better if we could write

ow(foo.bar, ow.optional.string);
ow(unicorn.rainbow, ow.optional.string);

from ow.

SamVerschueren avatar SamVerschueren commented on May 19, 2024 1

@Martin-Pitt can you create a new issue so we can discuss this separately? I'm close to landing a PR for optional so it will get lost.

from ow.

sindresorhus avatar sindresorhus commented on May 19, 2024 1

@hamxabaig There's an open PR for it here: #82 You could help test it and add your feedback. That would help move it along.

from ow.

SamVerschueren avatar SamVerschueren commented on May 19, 2024

I think I prefer ow.optional.string as well. I will have a look at the conditional feature, looks pretty neat! Thanks for sharing!

from ow.

Martin-Pitt avatar Martin-Pitt commented on May 19, 2024

On the other side of the coin for non-optional, could there be a ow.mandatory that throws by using it as default arg?

function getPage(identifier = ow.mandatory()) {
    ow(identifier, ow.string);
}

Reference: 16. Mandatory Parameter Shorthand

mandatory = () => {
  throw new Error('Missing parameter!');
}

foo = (bar = mandatory()) => {
  return bar;
}

from ow.

hamxabaig avatar hamxabaig commented on May 19, 2024

Is this gonna land anytime soon in the library? Definitely makes sense otherwise makes the code very ugly with ifs & elses.

from ow.

hamxabaig avatar hamxabaig commented on May 19, 2024

@sindresorhus sure thing, But i'm not that proficient in TypeScript. I'll try to see what i can do 👍

from ow.

IssueHuntBot avatar IssueHuntBot commented on May 19, 2024

@issuehuntfest has funded $80.00 to this issue. See it on IssueHunt

from ow.

IssueHuntBot avatar IssueHuntBot commented on May 19, 2024

@SamVerschueren has submitted a pull request. See it on IssueHunt

from ow.

IssueHuntBot avatar IssueHuntBot commented on May 19, 2024

@sindresorhus has rewarded $72.00 to @SamVerschueren. See it on IssueHunt

  • 💰 Total deposit: $80.00
  • 🎉 Repository reward(0%): $0.00
  • 🔧 Service fee(10%): $8.00

from ow.

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.