Skip to content

Computation of intersection of multiple objects#54903

@missannil

Description

@missannil

Bug Report

🔎 Multiple objects intersection

🕗 5.1.3 and 5.1.6

⏯ Playground Link

Playground link with relevant code

💻 Code

typea={a: string};typeb={b: number};typec={a: number};typed={a: boolean};typeComputeIntersection<O>={[kinkeyofO]: O[k]};typetest1=ComputeIntersection<a&b>;// test1 =>{a: string ; b:number} That's what I expectedtypetest2=ComputeIntersection<a&c>;// test2 =>{a: never } ,That's what I expected. just like: test2 ={a: string & number }typetest3=ComputeIntersection<a&c&d>;// test3 = > never . This puzzles me,According to test2, test3 is supposed to be "{a: string & number & boolean}" The result is still "{a:never }"// Replace a & c with test2 .typetest4=ComputeIntersection<test2&d>;// test4 =>{a : never }. How do we understand this!

🙁 Actual behavior

type test3 = ComputeIntersection<a & c & d>
// test3 => never

🙂 Expected behavior

type test3 = ComputeIntersection<a & c & d>
// test3 ={a: never }

Metadata

Metadata

Assignees

No one assigned

    Labels

    Working as IntendedThe behavior described is the intended behavior; this is not a bug

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions