Closed
Description
TypeScript Version: 3.2.1
Search Terms: Discriminated Unions, Pick, Exclude
interface BaseTextFieldProps {
name?: string
}
export interface StandardTextFieldProps extends BaseTextFieldProps {
variant?: 'standard';
}
export interface FilledTextFieldProps extends BaseTextFieldProps {
variant: 'filled';
}
export type TextFieldProps = StandardTextFieldProps | FilledTextFieldProps;
export type FieldProps = {
someProps: string
};
export type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
export type Props1 = FieldProps & Omit<TextFieldProps, 'name'>
export const func1 = ({...props}: Props1): TextFieldProps => {
return {
...props,
};
};
export type Props2 = FieldProps & TextFieldProps
export const func2 = ({...props}: Props2): TextFieldProps => {
return {
...props,
};
};
Expected behavior:
Compiles
Actual behavior:
Errors with incompatible types for variant
Related Issues:
#27201 (comment)
#28274
but these were related to generics so I could not be sure if this is a duplicate or not