UNPKG

@enonic-types/global

Version:

Global variables and functions type definition.

85 lines (59 loc) 1.87 kB
# Enonic XP global TS types > TypeScript definitions for global variables of Enonic XP ## Install ```bash npm i --save-dev @enonic-types/global ``` ## Use Add the corresponding types to your `tsconfig.json` file that is used for application's server-side TypeScript code: ```json { "compilerOptions": { "types": [ "@enonic-types/global" ] } } ``` After that, all the global XP variables will be typed. Import functions, such as `require`, will return typed objects if the corresponding types for imported libraries are also added to your `tsconfig.json`. ## Configuration ### Require To add support for type resolution for the custom libraries via `require`, you can redeclare the `XpLibraries` interface in global scope, which will lead to declaration merging: ```ts declare global { interface XpLibraries { '/lib/custom/mylib': typeof import('./mylib'); } } ``` #### Other imports If you want to use custom import functions, like `__non_webpack_require__` with Webpack, just use global `XpRequire` type for this: ```ts declare const __non_webpack_require__: XpRequire; ``` ### Beans To create a new bean, a `__.newBean()` function must be used. Making it return a proper type can be done in two ways. Say you have created an interface for that been somewhere in your project: ```ts interface SomeHelper { help(text: string): void; } ``` #### Option 1 You can pass the type argument explicitly. This option is a bit cleaner. ```ts const helper = __.newBean<SomeHelper>('com.me.project.SomeHelper'); ``` #### Option 2 Or you can map the bean name to bean interface. It may be a preferable way to do it, if the bean is used across multiple files: ```ts declare global { interface XpBeans { 'com.me.project.SomeHelper': SomeHelper; } } const helper = __.newBean('com.me.project.SomeHelper'); ```