Reputation: 187
I have this interface:
interface ILabelProps {
labelSize?: LabelSize;
labelColor?: LabelColor;
labelWeight?: LabelWeight;
labelCase?: LabelCase;
labelVariant?: LabelVariant;
children: string;
}
I'd like to add another property predefinedLabelType: PredefinedLabelType;
but in case predefinedLabelType
is passed I'd like to disallow passing any other label property except children
.
Is it possible?
Upvotes: 0
Views: 158
Reputation: 186
This one uses 2 interfaces to make and type that satisfies your scenario
interface IPreDefinedLabelsProps {
predefinedLabelType:string,
labelSize?: never;
labelColor?: never;
children?: never;
}
interface INormalLabelsProps {
predefinedLabelType?:never,
labelSize?: string;
labelColor?: string;
children?: string;
}
type LabelProps = IPreDefinedLabelsProps | INormalLabelsProps
const label:LabelProps = {
predefinedLabelType: 'test',
labelSize:'asfd',
children:'test'
}
const label2:LabelProps = {
labelSize:'asfd',
children:'test'
}
const label3:LabelProps = {
labelSize:'asfd',
children:'test'
}
Upvotes: 2