Intersection N=45

tsz is 1.6x faster 289 lines 4 KB

Timing

tsz
272.97ms
tsgo
430.42ms

Files

// Intersection type stress test

interface Part0 {
  prop0: string;
  shared: number;
  method0(): number;
}

interface Part1 {
  prop1: string;
  shared: number;
  method1(): number;
}

interface Part2 {
  prop2: string;
  shared: number;
  method2(): number;
}

interface Part3 {
  prop3: string;
  shared: number;
  method3(): number;
}

interface Part4 {
  prop4: string;
  shared: number;
  method4(): number;
}

interface Part5 {
  prop5: string;
  shared: number;
  method5(): number;
}

interface Part6 {
  prop6: string;
  shared: number;
  method6(): number;
}

interface Part7 {
  prop7: string;
  shared: number;
  method7(): number;
}

interface Part8 {
  prop8: string;
  shared: number;
  method8(): number;
}

interface Part9 {
  prop9: string;
  shared: number;
  method9(): number;
}

interface Part10 {
  prop10: string;
  shared: number;
  method10(): number;
}

interface Part11 {
  prop11: string;
  shared: number;
  method11(): number;
}

interface Part12 {
  prop12: string;
  shared: number;
  method12(): number;
}

interface Part13 {
  prop13: string;
  shared: number;
  method13(): number;
}

interface Part14 {
  prop14: string;
  shared: number;
  method14(): number;
}

interface Part15 {
  prop15: string;
  shared: number;
  method15(): number;
}

interface Part16 {
  prop16: string;
  shared: number;
  method16(): number;
}

interface Part17 {
  prop17: string;
  shared: number;
  method17(): number;
}

interface Part18 {
  prop18: string;
  shared: number;
  method18(): number;
}

interface Part19 {
  prop19: string;
  shared: number;
  method19(): number;
}

interface Part20 {
  prop20: string;
  shared: number;
  method20(): number;
}

interface Part21 {
  prop21: string;
  shared: number;
  method21(): number;
}

interface Part22 {
  prop22: string;
  shared: number;
  method22(): number;
}

interface Part23 {
  prop23: string;
  shared: number;
  method23(): number;
}

interface Part24 {
  prop24: string;
  shared: number;
  method24(): number;
}

interface Part25 {
  prop25: string;
  shared: number;
  method25(): number;
}

interface Part26 {
  prop26: string;
  shared: number;
  method26(): number;
}

interface Part27 {
  prop27: string;
  shared: number;
  method27(): number;
}

interface Part28 {
  prop28: string;
  shared: number;
  method28(): number;
}

interface Part29 {
  prop29: string;
  shared: number;
  method29(): number;
}

interface Part30 {
  prop30: string;
  shared: number;
  method30(): number;
}

interface Part31 {
  prop31: string;
  shared: number;
  method31(): number;
}

interface Part32 {
  prop32: string;
  shared: number;
  method32(): number;
}

interface Part33 {
  prop33: string;
  shared: number;
  method33(): number;
}

interface Part34 {
  prop34: string;
  shared: number;
  method34(): number;
}

interface Part35 {
  prop35: string;
  shared: number;
  method35(): number;
}

interface Part36 {
  prop36: string;
  shared: number;
  method36(): number;
}

interface Part37 {
  prop37: string;
  shared: number;
  method37(): number;
}

interface Part38 {
  prop38: string;
  shared: number;
  method38(): number;
}

interface Part39 {
  prop39: string;
  shared: number;
  method39(): number;
}

interface Part40 {
  prop40: string;
  shared: number;
  method40(): number;
}

interface Part41 {
  prop41: string;
  shared: number;
  method41(): number;
}

interface Part42 {
  prop42: string;
  shared: number;
  method42(): number;
}

interface Part43 {
  prop43: string;
  shared: number;
  method43(): number;
}

interface Part44 {
  prop44: string;
  shared: number;
  method44(): number;
}

type BigIntersection = Part0 & Part1 & Part2 & Part3 & Part4 & Part5 & Part6 & Part7 & Part8 & Part9 & Part10 & Part11 & Part12 & Part13 & Part14 & Part15 & Part16 & Part17 & Part18 & Part19 & Part20 & Part21 & Part22 & Part23 & Part24 & Part25 & Part26 & Part27 & Part28 & Part29 & Part30 & Part31 & Part32 & Part33 & Part34 & Part35 & Part36 & Part37 & Part38 & Part39 & Part40 & Part41 & Part42 & Part43 & Part44;
type OverloadIntersection = ((x: string) => string) & ((x: number) => number) & ((x: boolean) => boolean);
declare const big: BigIntersection;
const _prop0 = big.prop0;
const _shared = big.shared;
const _propLast = big.prop44;