Giter Site home page Giter Site logo

Union for variadic types about psl HOT 11 CLOSED

azjezz avatar azjezz commented on August 26, 2024 1
Union for variadic types

from psl.

Comments (11)

nzour avatar nzour commented on August 26, 2024 1

Are you up for a PR?

I'm on it

from psl.

nzour avatar nzour commented on August 26, 2024 1

You right, first, second and rest sounds more logic, I see it now

from psl.

azjezz avatar azjezz commented on August 26, 2024

Hm, i think we can allowing extra arguments to Type\union and Type\intersection ( i prefer if these two provide the same API ).

This will also prevent a BC break, in v2.0 we can drop $right and $left and make both union and intersection accept variadic arguments.

from psl.

nzour avatar nzour commented on August 26, 2024

🤔 Hmm, I kept in my that UnionType has left and right branches, therefore function union() takes two arguments to be honest with users.

I was thinking about suggestion to define extra function to prevent boilerplate when we need define union type with a lot of cases.
But, If you think it is alright to expand already existed function - it is fair enough for me

from psl.

azjezz avatar azjezz commented on August 26, 2024

we can have function union(TypeInterface $right, TypeInterface $left, TypeInterface ...$other), UnionType is an internal class, there's no reason to design the public API to match it.

from psl.

nzour avatar nzour commented on August 26, 2024

Looks great for me.

from psl.

azjezz avatar azjezz commented on August 26, 2024

Are you up for a PR?

from psl.

nzour avatar nzour commented on August 26, 2024

By the way, why you want to make union and intersection completely variadic (in v2.0)?
union(string()) - doesn't make sense for me

from psl.

azjezz avatar azjezz commented on August 26, 2024

union(string()) - doesn't make sense for me

it doesn't to me too, but that's solvable via Psl\invariant(Iter\count($types) >= 2, 'at least 2 types are required to create a union.');

from psl.

nzour avatar nzour commented on August 26, 2024

union(string()) - doesn't make sense for me

it doesn't to me too, but that's solvable via Psl\invariant(Iter\count($types) >= 2, 'at least 2 types are required to create a union.');

Do you prefer runtime exception instead of statically analysed issue?

from psl.

azjezz avatar azjezz commented on August 26, 2024

the reason is i don't like $right, $left, $others, maybe we could just rename them to something more appropriate...

WDYT about $first, $second, ...$rest? ( renaming arguments is not BC break, we can do it now )

from psl.

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.