Bug Report
I don't know which is the correct behavior...
I would appreciate it if you could change the title of the issue.
🔎 Search Terms
generic return type union extend
maybe related: #43425
🕗 Version & Regression Information
This changed between versions 4.3.0-dev.20210315 and 4.3.0-dev.20210323
I was unable to test this on prior versions (before v3.5.1) because Omit was not implemented.
⏯ Playground Link
Playground link with relevant code
worked 4.3.0-dev.20210315
not worked 4.3.0-dev.20210323
💻 Code
type GivenIdType = number ;
type StringableIdType = number ;
interface MyType {
givenId : GivenIdType ;
stringableId : StringableIdType ;
}
type ToPropertyNull < T , K extends keyof T > = { [ P in keyof T ] : P extends K ? null : T [ P ] } ;
type AddTmpIdId < T , K extends keyof T > = ToPropertyNull < T , K > & { tmpId : string } ;
type StringableType = Omit < MyType , 'stringableId' > & {
stringableId : string ;
} ; // { givenId: GivenIdType, stringableId: string }
type NonGivenIdWithTmpId = AddTmpIdId <
StringableType ,
'givenId'
> ; // { givenId: null, stringableId: string, tmpId: string }
const test = <
T extends StringableType | NonGivenIdWithTmpId
> (
v : T
) : ( Omit < T , 'stringableId' > ) & { stringableId : StringableIdType } => ( {
...v ,
stringableId : Number . parseInt ( v . stringableId , 10 ) ,
} ) ;
🙁 Actual behavior
cannot assign function argument to return type
Type '{ stringableId: number; givenId: number; } | { stringableId: number; givenId: null; tmpId: string; }' is not assignable to type 'Omit<T, "stringableId"> & { stringableId: number; }'.
🙂 Expected behavior
Union type function arguments given by generics can be used as part of the return type
Reactions are currently unavailable
Bug Report
I don't know which is the correct behavior...
I would appreciate it if you could change the title of the issue.
🔎 Search Terms
generic return type union extend
maybe related: #43425
🕗 Version & Regression Information
Omitwas not implemented.⏯ Playground Link
Playground link with relevant code
worked 4.3.0-dev.20210315
not worked 4.3.0-dev.20210323
💻 Code
🙁 Actual behavior
cannot assign function argument to return type
🙂 Expected behavior
Union type function arguments given by generics can be used as part of the return type