Intersection N=35
tsz is 1.6x faster 229 lines 3 KB
Timing
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;
}
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;
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.prop34;