Intersection N=20
No-emit type-check timing for intersection n=20.
tsz is 6.7x faster 139 lines 2 KB
Timing
Files
// Intersection type stress test
// Tests intersection normalization and property merging
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;
}
type BigIntersection = Part0 & Part1 & Part2 & Part3 & Part4 & Part5 & Part6 & Part7 & Part8 & Part9 & Part10 & Part11 & Part12 & Part13 & Part14 & Part15 & Part16 & Part17 & Part18 & Part19;
// Function overload intersection
type OverloadIntersection =
((x: string) => string) &
((x: number) => number) &
((x: boolean) => boolean);
// Generic intersection
type GenericIntersection<T, U> = T & U;
declare const big: BigIntersection;
const _prop0 = big.prop0;
const _shared = big.shared;
const _propLast = big.prop19;