Typescript baseUrl不影响VS Code中的模块分辨率

时间:2018-01-15 21:31:40

标签: typescript path visual-studio-code

鉴于下面描述的项目,我收到以下错误:

[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的正确模块路径。

我犯了错误吗?我的配置中是否有某些我没有考虑到的内容或者我的内容?

1 个答案:

答案 0 :(得分:2)

由于您的tslint配置中存在no-implicit-dependencies规则,因此出现此错误。

目前,没有选项可以配置此规则以使用相对路径。因此,如果您想使用相对路径 - 您需要禁用此规则。将"no-implicit-dependencies": false放入tslint.json文件中。

以下是关于使此规则可配置的持续讨论: https://github.com/palantir/tslint/issues/3364https://github.com/palantir/tslint/issues/3483

Here你也可以找到一些hacky解决方法。