Je suis nouveau sur TypeScript et j'essaye de créer une fonction pour une directive angular 2. Quelqu'un peut-il expliquer, en langage pour n00bs, ce que l'erreur essaie de me dire quand je compile avec Gorgée?
Une implémentation ne peut pas être déclarée dans des contextes ambiants
Le message s'applique à offset()
et 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()
}
}
Une implémentation ne peut pas être déclarée dans des contextes ambiants
Vous avez probablement votre fichier nommé foo.d.ts
au lieu de foo.ts
. Cela le marque comme un fichier de déclaration (plus à ce sujet https://basarat.gitbooks.io/TypeScript/content/docs/types/ambient/d.ts.html ) et vous ne pouvez pas mettre logique dans ces derniers comme vous êtes déclarant quelle logique existe ailleurs.
Je l'ai corrigé en faisant: npm install rxjs
Je pense que cela m'est arrivé, car j'ai accidentellement modifié l'un des fichiers dans node_modules. Cela m'a corrigé:
rm -r node_modules
npm install
erreur TS1183: Une implémentation ne peut pas être déclarée dans des contextes ambiants. Solution: module de nœud supprimé et réinstallez-le.
J'ai eu la même erreur et l'ai corrigée en tapant:
npm install --save TypeScript@latest
package.json a maintenant la dernière version de ts et le compilateur ts est 2.2.2.