web-dev-qa-db-ja.com

angular 2 TypeScript実装はアンビエントコンテキストでは宣言できません

私はTypeScriptを初めて使い、angular 2ディレクティブの関数を作成しようとしています。むかつく?

アンビエントコンテキストでは実装を宣言できません

メッセージは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()
  }
}
11
poashoas

アンビエントコンテキストでは実装を宣言できません

ほとんどの場合、ファイル名はfoo.d.ts の代わりに foo.ts。それはそれを宣言ファイルとしてマークします(詳細については https://basarat.gitbooks.io/TypeScript/content/docs/types/ambient/d.ts.html )、logicあなたがそうであるようにdeclaring他の場所に存在するロジック。

22
basarat

私はそれを修正して修正しました:npm install rxjs

8
Rob Lassche

Node_modulesのファイルの1つを誤って編集したため、これは私に起こったと思います。これは私のためにそれを修正しました:

rm -r node_modules
npm install
3
LexieHankins

エラーTS1183:アンビエントコンテキストでは実装を宣言できません。解決策:ノードモジュールを削除して再インストールします。

1
Nizam Khan

私は同じエラーがあり、入力して修正しました:

npm install --save TypeScript@latest

package.jsonには最新のtsバージョンがあり、tsコンパイラは2.2.2です。

1
Nikhil Dinesh