Похоже, эта проблема связана с IDE WebStorm. Я сообщил WebStorm. И отслеживайте здесь.
Я использую Angular 2 с TypeScript 2.
Как явно использовать местоположение из типов lib.d.ts? Потому что теперь он отображается красным в моей IDE WebStorm 2016.3 EAP:
const hostname = location.hostname;
const hostname = window.location.hostname;
У меня есть это в моем файле:
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 считает, что это location
из Angular 2.
На скриншоте ниже видно, что все функции, принадлежащие Location
из Angular 2.
Один из способов — использовать 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
}
}
"lib": ["es6", "dom"]
из строкиtsconfig.json
? - person Nitzan Tomer   schedule 30.08.2016AngularLocation
, может быть, это позволит вам избавиться от ошибки? - person Nitzan Tomer   schedule 30.08.2016import { Location as Location2 } from '@angular/common';
иconstructor(private _location: Location2) {}
, это решает проблему... - person Hongbo Miao   schedule 30.08.2016