2015-07-08 13 views
13

Ich habe vor kurzem auf Visual Studio Code 0.5.0 aktualisiert und einige neue Fehler aufgetaucht, die vorher nicht da waren.In VSCode beim Exportieren von Funktionen: "Einzelne Deklarationen müssen alle exportiert werden oder alle lokalen"

Ich habe eine Reihe von Funktionen, die lokal deklariert und dann exportiert werden. Da das Upgrade jedoch den Mauszeiger über den einzelnen lokalen Funktionsnamen hält, wird der Fehler ausgelöst. Einzelne Deklarationen in der zusammengeführten Deklaration Funktionsname müssen alle exportiert oder alle lokal sein.

Dies ist eine lokale Beispielfunktion, die exportiert wird.

var testParamsCreatorUpdater = function (lTestParams, creatorID){ 
    lTestParams.creator = creatorID; 
    return lTestParams; 
}; 
module.exports.testParamsCreatorUpdater = testParamsCreatorUpdater; 

Ich weiß, ich dies ...

ändern
module.exports.testParamsCreatorUpdater = function (lTestParams, creatorID){ 
    lTestParams.creator = creatorID; 
    return lTestParams; 
}; 

Und prepend module.exports. zu jedem testParamsCreatorUpdater() Anruf.

Aber warum ist das erste Snippet falsch? Wie ich es verstehe, stellt require() alles im Modul module.exports zur Verfügung, was auch immer es benötigt.

Antwort

1

Ich denke, dass es mit der Funktion der zusammengeführten Deklaration für TypeScript ref verwandt ist. Ich habe die Detailrecherche für Typescript nicht gemacht, aber es scheint, dass es Javascript in der Typoskript-Datei enthalten kann.

Ich denke, die Art und Weise, wie testParamsCreatorUpdater im Javascript deklariert wurde, wurde von VSCode als Fehler erkannt, weil er denkt, dass die beiden Deklarationen nicht zusammengeführt werden können.

+0

Irgendwelche Updates zu diesem Thema? Ich bekomme auch diesen Fehler in VS2017 Update 3 w das Modul, das 3 Schnittstellen deklariert. – alexb

0

denke ich an einer JavaScript-Ebene kann es nicht unterscheiden zwischen:

var testParamsCreatorUpdater = ... 

und

module.exports.testParamsCreatorUpdater = ... 

als die Namen gleich sind. Ich habe genau die gleichen Fehler (was mich zu diesem Beitrag) in Typoskript, wenn ich das versucht:

import { AuditService } from '../services/audit.service'; 
import { Audit } from '../models/audit.model'; 

@Component({ 
    selector: 'audit', 
    templateUrl: './audit.component.html', 
}) 
export class Audit { 
    constructor(private auditService: AuditService) { 
    } 
} 

So Typoskript nicht gefallen, dass ich ein Modul Audit und exportierte eine Klasse auch genannt Audit genannt importiert .