I've managed to get the compiler to typecheck
const x: Thing = exprA;
const y: Thing = exprB;
const z = [x, y];
but somehow not: const z: Thing[] = [exprA, exprB];
although exprA and exprB were pretty nasty typing wise.