- Notifications
You must be signed in to change notification settings - Fork 13.2k
Closed
Labels
Working as IntendedThe behavior described is the intended behavior; this is not a bugThe behavior described is the intended behavior; this is not a bug
Description
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
Labels
Working as IntendedThe behavior described is the intended behavior; this is not a bugThe behavior described is the intended behavior; this is not a bug