鉴于下面描述的项目,我收到以下错误:
[ts] Cannot use 'new' with an expression whose type lacks a call or construct signature.
[tslint] Module 'Enums' is not listed as dependency in package.json (no-implicit-dependencies)
我在VS Code中打开的项目的文件夹结构:
root/
-- tsconfig.json
-- src/
---- web/
------ src/
-------- ts/
---------- Navbar.ts (with exported namespace "Navbar")
---------- Shared/
------------ Other.ts
我的tsconfig.json:
{
"compilerOptions": {
"baseUrl": "./src/web/src/ts/"
}
}
Navbar.ts中的Navbar模块:
export namespace Navbar {
export class NavbarHandler {
...
}
}
在Other.ts中导入Navbar:
import { Navbar } from "Navbar";
const navbar = new Navbar.NavbarHandler();
据我所知,我的baseUrl是正确的并且被VS Code识别 - 因为当我将鼠标悬停在Other.ts中的"Navbar"
时,VS Code会显示Navbar的正确模块路径。
我犯了错误吗?我的配置中是否有某些我没有考虑到的内容或者我的内容?
答案 0 :(得分:2)
由于您的tslint配置中存在no-implicit-dependencies
规则,因此出现此错误。
目前,没有选项可以配置此规则以使用相对路径。因此,如果您想使用相对路径 - 您需要禁用此规则。将"no-implicit-dependencies": false
放入tslint.json
文件中。
以下是关于使此规则可配置的持续讨论: https://github.com/palantir/tslint/issues/3364, https://github.com/palantir/tslint/issues/3483
Here你也可以找到一些hacky解决方法。