Typescript version 2.2.2
I wrote this require in my UserRoutzr.ts
const users = <IUser[]> require(path.join(process.cwd() + "/data"));
TSLint is raising the following warning:
require statement not part of an import statement
if I changed it to :
import users = <IUser[]> require(path.join(process.cwd() + "/data"));
Then it's raising an error :
TS1003 Identifier expected
How should I rewrite this require ? thanks for feedback
may be you need dynamic module loading, and the code like this:
TypeScript modules are an implementation of ES6 modules. ES6 modules are static. Your issue comes from the dynamic path:
path.join(process.cwd() + "/data")
. The compiler can't determine which module it is at compile time, and the linter doesn't like the causes that lead toany
.You should use a static path to the module. At compile time, TypeScript resolves it. And it affects the right exported type (
IUser[]
) tousers
.Notice: If your module
data
contains just data, you could consider to change it to a JSON file, which could be loaded (Node.js) or bundled (Webpack).UPDATE (from May 2019) — It is also possible to use dynamic import, with which TypeScript accepts static and dynamic paths:
See also: TypeScript 2.4 Release Notes