如何显式使用lib.d.ts类型?

时间:2016-08-29 21:45:49

标签: angular typescript webstorm typescript2.0

  

似乎这个问题与IDE WebStorm有关。我向WebStorm报告。并跟踪here

我在TypeScript 2中使用Angular 2.

如何明确使用 lib.d.ts 类型的位置?因为现在它在我的IDE WebStorm 2016.3 EAP中显示为红色:

const hostname = location.hostname;
const hostname = window.location.hostname;

enter image description here

我的文件中有这个:

import { Location } from '@angular/common';

constructor(private _location: Location) {}
// note there is an underline before
// and when I use in other functions, I actually use 'this._location' not just '_location'

我发现在删除import { Location } from '@angular/common';后,错误将会消失。

我猜这个错误显示的原因是因为IDE认为这是来自Angular 2的location

从下面的屏幕截图中可以看到Angular 2中属于Location的所有函数。

enter image description here

一种方法是使用const hostname = (location as any).hostname;,但还有更好的方法吗?感谢

我的 tsconfig.json 如果有帮助:

{
  "compilerOptions": {
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "module": "commonjs",
    "removeComments": true,
    "sourceMap": true,
    "lib": ["es6", "dom"]
  },
  "include": [
    "node_modules/@types/**/*.d.ts",
    "src/**/*.ts"
  ],
  "exclude": [
    "node_modules",
    "!node_modules/@types/**/*.d.ts"
  ],
  "compileOnSave": false,
  "buildOnSave": false,
  "atom": {
    "rewriteTsconfig": false
  }
}

1 个答案:

答案 0 :(得分:1)

感谢@ NitzanTomer的帮助。

似乎这个问题与WebStorm有关。

我向WebStorm报告了,你可以在这里跟踪问题:

https://youtrack.jetbrains.com/issue/WEB-23021