Created
July 23, 2021 08:39
-
-
Save MikelArnaiz/8ccd2bea9f40ea2a8c93c6a2e7d5ac01 to your computer and use it in GitHub Desktop.
Union types vs enums vs const assertions
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const ALIGN_LEFT = 'left' | |
const ALIGN_RIGHT = 'right' | |
type AlignUnion = typeof ALIGN_LEFT | typeof ALIGN_RIGHT | |
const foo: AlignUnion = 'bar' | |
const foo1: AlignUnion = 'left' | |
const foo2: AlignUnion = ALIGN_LEFT | |
enum AlignEnum { | |
Left = 'left', | |
Right = 'right' | |
} | |
const bar: AlignEnum = 'bar' | |
const bar1: 'left' // Its unique | |
const bar2: AlignEnum = AlignEnum.Left | |
const AlignConst = { | |
Left: 'left', | |
Right: 'right' | |
} as const | |
type AlignConst = typeof AlignConst[keyof typeof AlignConst]; | |
const baz: AlignConst = 'baz' | |
const baz1: AlignConst = 'left' | |
const baz2: AlignConst = AlignConst.Left |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment