2017-04-08 4 views
1

Ich habe vor ein paar Tagen angefangen Typescript zu lernen, es war bisher ziemlich verwirrend, besonders mit Modulen.Kann ich von in TS 1.x geschriebenen TS 2.x-Typen importieren?

ich den Import Typisierungen npm install -s @types/knockout verwenden, aber die meisten der Typisierungen vorhanden sind geschrieben noch in Typoskript 1.

Hier wird eine Typisierung Definition von es6-Versprechen Paket:

declare module 'es6-promise' { 
var foo: typeof Promise; // Temp variable to reference Promise in local context 
namespace rsvp { 
    export var Promise: typeof foo; 
    export function polyfill(): void; 
} 
export = rsvp; 
} 

Gibt es eine Möglichkeit, den als export = xxx von typescript 2 angegebenen Standardexport zu importieren?

Antwort

1

Ja, Sie können sie verwenden. Unglücklicherweise hat TypeScript einen rückblickenden Ansatz für ES-Module anstelle eines vorausschauenden entwickelt.

export = rsvp 

ist kein Standardexport.

Ein Standardexport würde die Form hat

export default rsvp; 

export = ist ein Typoskript Commonjs spezifisches Konstrukt, das Zuordnung zur module.exports Eigenschaft verfügbar von Commonjs Module impliziert.

Um es als Standard zu importieren, müssen Sie zwei Dinge tun.

  1. gesetzt "allowSyntheticDefualtImports": true in Ihrem tsconfig.json
  2. ein ES-Modul verwenden < -> Commonjs Modul Interop bewusst Laufzeit wie SystemJS und/oder Rohr Code durch Babel in einem anderen Build-Schritt