Screenshot / Code Snippet

animated usage example


Stack Exchange global types is a type declaration package adding or augmenting type definitions for global objects exposed by Stack Exchange for client-side consumption on pages of network sites. Currently, the package includes the StackExchange, StackOverflow, CHAT, Svg, and Stacks global object definitions.

Change log

Please note that the major version 2 starts from the patch version 2.0.2 due to the technical difficulties we encountered when bumping the major version.

Since Feature Definitions/augmentations Known Limitations
1.0.0 augments Stacks exposed by the @stackoverflow/stacks package Adds missing classes and helper methods like showModal/hideModal (see example usage in official Stacks docs)
1.1.0 adds type definitions for StackExchange object (exposed on all pages on the network sites) Full definition (for example, StackExchange.options.user.isRegistered) - as most of the Stack Exchange codebase is not open-source, so there are no type definitions available to augment v1.1.1 only includes some of the exposed helper methods as each needs to be tested
1.2.0 adds type definitions for the CHAT object Full definition (for example, CHAT.user.canModerate())
1.2.1 adds question nested object to StackExchange global object Three new method definitions:
getQuestionId(), canViewVoteCounts(), scrollToPost(postId)
getQuestionId throws an error on non-post pages, but that's not expressable via declarations
1.2.2 type docs & improvements Courtesy of double-beep: documentation for types and stricter AllPlacements
1.3.0 adds settings object for StackExchange object Partial definition - adds account, flagging, markdown, and site-wide settings definitions
1.4.0 more type definitions for the CHAT global object courtesy of double-beep Full definition for UserInformation, RoomUsersInfo, and several methods
1.5.0 methods on StackExchange global object adds ready and gaReady defer methods
2.0.2 Stacks namespace declaration merging; package splitting Merges Stacks declaration with official TypeScript source; splits the declarations into 3 submodules: chat, stackexchange, and stacks (can be imported directly as @userscripters/stackexchange-global-types/lib/<module> if you only need some of the global types or as a bundle if you import the package with @userscripters/stackexchange-global-types)
2.1.0 adds type definitions for the Svg object Full definition of all 228 icon helpers courtesy of double-beep
2.1.1 improved Stacks definitions ModalController defintion & tests
2.2.0 new testing framework switched to tsd for testing - please upgrade if you see a "Patch file found for package definitelytyped-header-parser" error when installing the package
2.3.0 adds type definitions for the StackOverflow object Full definition of all enums
2.4.0 adds realtime property and corresponding Realtime interface on the global StackExchange object Full definition of all properties and methods
2.4.1 adds Stimulus application singleton and controller utilities to the Stacks namespace Courtesy of Martijn Pieters: ControllerDefinition interface, createController and addController utilities, application singleton
2.4.2 adds missing StackExchange.helpers defintions added addLightbox, bindMovablePopups, showBannerMessage, showErrorMessage, showInfoMessage, and showSuccessMessage helpers
2.5.2 adds missing StackExchange.vote definitions; updates SVG types; adds missing helpers Full definition of all properties and methods; htmlEncode helper and useRawHtml option
2.6.0 adds all remaining StackExchange.helpers definitions; updates SVG types Full definition of every helper
2.7.0 adds more properties of the StackExchange global object Courtesy of Martijn Pieters: Stacks declarations now use official typings.

interfaces: CommentsSettings, ElectionsSettings, IntercomSettings, LegalSettings, MentionsSettings, PathsSettings, QuestionsSettings, SnippetsSettings, SubscriptionsSettings, TopBarSettings, VoteBountyInitOptions.

more settings properties.

properties: sidebar, snippets, vote_bounty, vote_closingAndFlagging.


The script is licensed under the GPL-3.0-or-later license.


The package is published as both an NPM package and a GitHub package. Can be installed via a package manager like NPM as usual:

npm install --save-dev @userscripters/stackexchange-global-types

If you opt to install it from the GitHub registry, please note that it only supports scoped packages, you will need a simple .npmrc file at your project root:


You will also need to be logged in to GitHub. An easy way to do so is to have a global .npmrc with your PAT (personal access token) set as an access token:

//npm.pkg.github.com/:_authToken=<your token here>


The type declarations are intended to be used with TypeScript/JavaScript projects targeting browsers.


Author: Oleg Valter
Organization: UserScripters

Contributors (core):
double-beep (with special thanks for initial definitions and docs)

Martijn Pieters

Please, submit bug reports on the source repository. Before adding a new one, please check if it hasn't been raised before.

You can also drop by to chat, we are a friendly bunch.


Source code is written TypeScript (d.ts declaration files).

The project is using tsd (see repo) for unit-testing types.

Contributions are welcome, you can always submit a PR here.


You must log in to answer this question.

Browse other questions tagged .