Closed
Description
Bug Report
π Search Terms
π Version & Regression Information
- This changed between versions 4.2 and 4.3 beta
β― Playground Link
Playground link with relevant code
π» Code
type Params = {
foo: string;
} & ({ tag: 'a'; type: number } | { tag: 'b'; type: string });
const getType = <P extends Params>(params: P) => {
const {
// Omit
foo,
...rest
} = params;
return rest;
};
declare const params: Params;
switch (params.tag) {
case 'a': {
// TS 4.2: number
// TS 4.3: string | number
const result = getType(params).type;
break;
}
case 'b': {
// TS 4.2: string
// TS 4.3: string | number
const result = getType(params).type;
break;
}
}
π Actual behavior
4.3 behaviour should match 4.2 behaviour. See comments in code.
π Expected behavior
See comments in code.