2017-04-11 2 views
0

Ich bin neu in ES6 und TypeScript. Wir haben einen Teil unseres Codes auf ES6 umgestaltet, aber wir probieren aus, ob es nicht besser wäre, stattdessen auf TypeScript umzusteigen, um leichter wartbaren Code zu schreiben.Typ des exportierten Objekts, das in TypeScript nicht erkannt wird

Wenn die folgende haben, vereinfachte ES6 Modul config.js

export default { 
    logger: require('winston'), 
    somethingelse: 'text' 
} 

ich importieren dieses Modul überall in meinem Projekt, wie in app.js:

import * as config from '../../../../config' 
const logger = config.logger 
... 

Soweit ich verstehe, Typisierung ist optional in TypeScript und ES6 Code sollte nur gut laufen, wenn ich nur die Dateien von .js zu .ts umbenennen. Bitte korrigieren Sie mich, wenn das eine falsche Annahme war, die ich hatte. Ich erhalte jedoch diesen Fehler, wenn ich kompilieren:

/project/app.ts(7,23): Property 'logger' does not exist on type 'typeof \"/project/config\"'. 

Das heißt also, ich haben eine Art zu erklären? Also ging ich weiter und erklärte eine Schnittstelle für das exportierte Objekt.

config.js:

interface IConfig { 
    logger: any; 
    somethingelse: string; 
} 

const defaultConfig: IConfig = { 
    logger: winston, 
    text: 'text' 
} 

export default defaultConfig 

Aber ich bin immer noch die obige Zusammenstellung Fehler.

Antwort

0

Entfernen Sie die * as ... aus Ihrer Import-Deklaration. Versuchen Sie folgendes:

import config from '../../../../config' 
const logger = config.logger 
... 

Sehen Sie diese Antwort für weitere Informationen Typescript export vs. default export

Verwandte Themen