As I solved this, I created my own interface - WebpackRequire - which extends NodeRequire with ensure 1 .
interface WebpackRequire extends NodeRequire { ensure( dependencies: string[], callback: (require: WebpackRequire) => void, errorCallback?: (error: Error) => void, chunkName?: string ): void; };
If you have only one instance of require.ensure , you can enter it in WebpackRequire using (require as WebpackRequire).ensure , but since I used it several times in the module, I created a local require at the top of the module, cast type as WebpackRequire , eg:
const require: WebpackRequire = (window as any).require;
1 I got ensure types from Documents on the Internet
source share