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 установить rxjs


Я имел ту же ошибку и исправил ее, набрав:

npm install --save typescript@latest

пакета.json теперь имеет последнюю версию ts, а компилятор ts-2.2.2.


ошибка TS1183: реализация не может быть объявлена в окружающих контекстах. Решение: удален модуль узла и переустановите его.


Я думаю, что это произошло со мной, потому что я случайно отредактировал один из файлов в node_modules. Это исправило его для меня:

rm -r node_modules
npm install