2016-05-25 103 views
4

我是新來的打字稿,我正在嘗試爲angular 2指令創建一個函數。 任何人都可以用n00bs的語言解釋,當我用Gulp編譯時,錯誤是想告訴我什麼?angular 2 typescript一個實現不能在環境中聲明

的實現不能在周圍環境

的信息適用於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() 
    } 
} 

回答

7

的實現不能在周圍環境中聲明

你最有可能有你的文件命名爲foo.d.ts而不是foo.ts。這標記爲聲明文件(更多關於https://basarat.gitbooks.io/typescript/content/docs/types/ambient/d.ts.html),並且您不能將邏輯放在這些中,因爲您是聲明其他地方存在什麼邏輯。

+0

我覺得很愚蠢...... – poashoas

+0

別擔心。所以我的https://en.wikipedia.org/wiki/Impostor_syndrome – basarat

+1

大聲笑,這個綜合症讓我做到了 – poashoas

1

我有同樣的錯誤,並通過輸入固定它:

npm install --save [email protected] 

的package.json已安裝最新版本的TS和TS編譯器是2.2.2。

相關問題