If i define function type with parameter like value: string | number, I can define function (value: string) => null of that type. And typescript don't show any warnings.
But if I define function type with generic parameter <T extends string | number>(value: T), then typescript will show error.
Could someone explain this behaviour?
code sample
type OnChangeUnion = (value: string | number) => void;
type OnChangeGeneric = <T extends string | number>(value: T) => void;
const handleChange = (value: string) => null;
const onChange: OnChangeGeneric = handleChange;
const onChangeA: OnChangeUnion = handleChange;
OnChangeUnionandOnChangeGenericare function types which must accept astring | numberargument. ButhandleChangeonly accepts astringargument, so it is neither anOnChangeUnionnor anOnChangeGeneric. - jcalz