We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Playground link with relevant 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; } }
4.3 behaviour should match 4.2 behaviour. See comments in code.
See comments in code.
Bug Report
π Search Terms
π Version & Regression Information
β― Playground Link
Playground link with relevant code
π» Code
π Actual behavior
4.3 behaviour should match 4.2 behaviour. See comments in code.
π Expected behavior
See comments in code.