Reputation: 6347
I have the following enum
export enum Sizes{
Small,
Large
}
which is getting used in my <Demo/>
component's props interface:
export interface IProps{
Label?: string;
Size: SizeEnum;
}
My question is, when I use this <Demo Size={how do i define size here?} />
?
Upvotes: 46
Views: 161288
Reputation: 47297
type
or as const
Both type
and as const
have auto-fill and will complain when an invalid value is used.
'up'
Implement with:
type MyEnum = 'up' | 'down' | 'left' | 'right'
interface IProps {
Size: MyEnum
}
MyEnum.Up
Implement with:
const MyEnum = {
Up: 'up',
Down: 'down',
Left: 'left',
Right: 'right',
} as const
type MyEnum = typeof MyEnum[keyof typeof MyEnum]
// Example type
interface IProps {
Size: MyEnum // string, without line `type MyEnum =...`
}
More detail on as const
and freezing parameters
Upvotes: 28
Reputation: 250396
You can just reference the enum value as you would in any other context:
export enum Sizes{
Small,
Large
}
export interface IProps{
Label?: string;
Size: Sizes;
}
class Demo extends React.Component<IProps> {}
let d = <Demo Size={Sizes.Large} />
Upvotes: 61