tstype A = 'a' type B = 'b' type C = 'c' let func: (arg: A | B) => unknown; func = (arg: A | B | C) => {}; // ok. contravariant func = (arg: A | B) => {}; // ok. func = (arg: A) => {}; // ok. covariant