Skip to content

Instantly share code, notes, and snippets.

@KevinPy
Last active September 29, 2025 12:58
Show Gist options
  • Select an option

  • Save KevinPy/153bafcc2252276a03476aae37803e1c to your computer and use it in GitHub Desktop.

Select an option

Save KevinPy/153bafcc2252276a03476aae37803e1c to your computer and use it in GitHub Desktop.
Const Objects over Enums

Old Way

export enum LoadingState {
  NOT_LOADED = 'Not loaded',
  LOADING = 'Loading',
  LOADED = 'Loaded',
  ERROR = 'Error',
}

Usage

const initialLoadingState = LoadingState.NOT_LOADED;

After compilation

var LoadingState;
(function (LoadingState) {
  LoadingState["NOT_LOADED"] = "Not loaded";
  LoadingState["LOADING"] = "Loading";
  LoadingState["LOADED"] = "Loaded";
  LoadingState["ERROR"] = "Error";
})(LoadingState || (LoadingState = {}));

Modern way

const LoadingState = {
  NOT_LOADED: 'Not loaded',
  LOADING: 'Loading',
  LOADED: 'Loaded',
  ERROR: 'Error',
} as const;

export type LoadingState = keyof typeof LoadingState;

Conclusion

  • Before : 1.1 MB bundle
  • After : 880 KB bundle
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment