Изглежда, че този проблем е свързан с 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