angular 2 typescript реализация не может быть объявлена в окружающих контекстах
Я новичок в typescript, и я пытаюсь создать функцию для директивы angular 2. Может ли кто-нибудь объяснить на языке n00bs, что ошибка пытается сказать мне, когда я компилирую с Gulp?
реализация не может быть признана в контексте окружающей среды
сообщение относится к offset()
и toggler()
.
import { Directive, ElementRef, Input } from '@angular/core';
@Directive({
selector: 'offCanvas',
inputs: ['target', 'toggle', 'placement', 'autohide', 'recalc', 'disableScrolling', 'modal', 'canvas', 'exclude'],
host: {
'(click)': 'Click()'
}
})
export class OffCanvas {
@Input('target') target: string;
@Input('canvas') canvas: string;
@Input('state') state: string;
@Input('exclude') exclude: string;
@Input('placement') placement: string;
@Input('toggle') toggle: boolean;
@Input('autohide') autohide: boolean;
@Input('recalc') recalc: boolean;
@Input('disableScrolling') disableScrolling: boolean;
@Input('modal') modal: boolean;
public offset() {
switch (this.placement) {
case 'left':
case 'right': return (<HTMLElement>document.querySelector(this.target)).offsetWidth
case 'top':
case 'bottom': return (<HTMLElement>document.querySelector(this.target)).offsetHeight
}
}
public toggler() {
if (this.state === 'slide-in' || this.state === 'slide-out') return
this[this.state === 'slid' ? 'hide' : 'show']()
}
Click() {
this.toggler()
}
}
5 ответов
реализация не может быть признана в контексте окружающей среды
у вас, скорее всего, есть файл с именем foo.d.ts
вместо foo.ts
. Это помечает его как файл объявления (подробнее об этомhttps://basarat.gitbooks.io/typescript/content/docs/types/ambient/d.ts.html) и вы не можете поставить логика в этих, как вы объявления какая логика существует в другом месте.
Я имел ту же ошибку и исправил ее, набрав:
npm install --save typescript@latest
пакета.json теперь имеет последнюю версию ts, а компилятор ts-2.2.2.
ошибка TS1183: реализация не может быть объявлена в окружающих контекстах. Решение: удален модуль узла и переустановите его.
Я думаю, что это произошло со мной, потому что я случайно отредактировал один из файлов в node_modules. Это исправило его для меня:
rm -r node_modules
npm install