TypeScript require with type checking

Use the import keyword with require instead of var

import chai = require('chai');

And compile with --module commonjs if you're not already

Or, if for some reason you don't want the test code to be an external module, adding a type annotation will preserve type checking.

var c: typeof chai = require("chai");

Since TypeScript 3.9 Beta was released it's possible to use require with typing

Example:

const {someValue} = require('fs')

"TypeScript now automatically detects the types of imports you’re using to keep your file’s style clean and consistent."

ref. https://devblogs.microsoft.com/typescript/announcing-typescript-3-9-beta/