如何配置角度项目tsconfig path []而不会发生错误?

时间:2018-09-29 19:35:40

标签: angular typescript lint

我们的 tsconfig.ts

中具有以下配置
    function snake(x, y) {
      // x and y coordinate of square (topleft)
      this.x = x;
      this.y = y;

      // reference to div object 'box2'
      this.boxid = "#box";
      this.box = document.getElementById(this.boxid);

      // attempts to move the box by args
      this.move = function (speedx, speedy) {
        var m = 50;
        // check if the box is within the container, moves if true
        if ((this.x+(speedx*m))<=150 && (this.y+(speedy*m))<=150 &&
        (this.y+(speedy*m))>=0 && (this.x+(speedx*m))>=0) {
          this.x = this.x + speedx*m;
          this.y = this.y + speedy*m;
        }
      }

      // called every frame to update position of the box
      this.update = function () {
        $("#box).css({top: snakeObj.y, left: snakeObj.x});
      }
    }

    var snakeObj = new snake(100, 100);
    var t = setInterval(s.update, 100);

然后我们可以在其他ts文件中使用更简洁的导入,如下所示:

{
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "src",
    "paths": {
      "@app/*": ["app/*"],
      "@pages/*": ["app/pages/*"]
      ...
    },

在插入项目时出现问题:

import {UrlConstants} from '@app/common/constants/url-constants';

有什么方法可以解决该问题而又不用回到使用Module '@app/common' is not listed as dependency in package.json 进行导入吗?

1 个答案:

答案 0 :(得分:3)

您可以按照此处https://palantir.github.io/tslint/rules/no-implicit-dependencies

所述,使用白名单配置规则

它看起来像这样:

tslint.json

{
  "rules": {
    "no-implicit-dependencies": [
      true,
      [
        "app",
        "pages"
      ],
      "dev"
    ]
  }
}

“ dev”选项并非真正适合您的情况,但是如果您按我喜欢的方式进行测试,则它很有用。

我个人认为规则应该更聪明,并且在某种程度上尝试解析tsconfig的路径。有时一个人有很多路径,但并不是每个人都使用NPM。 JSPM用户可能只需要禁用该规则,这很可惜,因为如果您不习惯此规则,那么该规则的动机非常好并且非常有用。

由于https://github.com/palantir/tslint/pull/4192已被合并,因此这现在应适用于@前缀路径。在升级之前,您可能需要使用"app""pages"