2015-07-08 2 views
13

Recentemente ho aggiornato a Visual Studio Code 0.5.0 e alcuni nuovi errori ritagliati che non c'erano prima.In VSCode durante l'esportazione delle funzioni: "Dichiarazioni individuali devono essere tutte esportate o tutte locali"

Ho un sacco di funzioni dichiarate localmente e quindi esportate. Dall'aggiornamento, tuttavia, passando con il mouse su ciascuno dei nomi delle funzioni locali viene generato l'errore Le singole dichiarazioni nella dichiarazione unita functionName devono essere tutte esportate o tutte locali.

Questa è una funzione locale di esempio che viene esportata.

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

mi rendo conto che posso cambiare questo ...

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

E fallo precedere module.exports. per ogni testParamsCreatorUpdater() chiamata.

Ma perché il primo frammento di bit è sbagliato? A quanto ho capito, require() rende tutto disponibile nell'oggetto module.exports a qualunque cosa lo richiedesse.

risposta

1

Penso che sia correlato alla funzionalità della dichiarazione unita per TypeScript ref. Non ho fatto la ricerca dettagliata per Typescript ma sembra che possa includere Javascript nel file Typescript.

Immagino che il modo in cui è stato dichiarato testParamsCreatorUpdater nel Javascript sia stato rilevato come errore da VSCode perché ritiene che le due dichiarazioni non possano essere unite.

+0

Qualsiasi aggiornamento su questo? Sto anche ricevendo questo errore nell'aggiornamento VS2017 3 w un modulo che dichiara 3 interfacce. – alexb

0

Penso ad un livello JavaScript non è possibile distinguere tra:

var testParamsCreatorUpdater = ... 

e

module.exports.testParamsCreatorUpdater = ... 

come i nomi sono gli stessi. Ho ottenuto lo stesso errore esatto (portandomi a questo post) a macchina, quando ho provato questo:

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) { 
    } 
} 

Quindi dattiloscritto non piaceva che ho importato un modulo chiamato Audit ed esportato una classe chiamata anche Audit .