1

Ich habe 2 Definitionsdateien: foo.d.ts und bar.d.tsES6 Import versteckt Typoskript Definitionsdatei

// foo.d.ts 
interface IBaseInterface { 
    // stuff 
} 

// bar.d.ts 
interface IDerivedInterface extends IBaseInterface { 
    // more stuff 
} 

Dies funktioniert gut. In dem Moment, in dem ich einen ES6-Import zu foo.d.ts hinzufüge, ist meine gesamte App nicht mehr in der Lage, ihren Inhalt zu "sehen".

Zum Beispiel Modifizieren foo.d.ts auf die folgenden:

// foo.d.ts 
import { SomeClass } from 'my-module'; 

interface IBaseInterface { 
    baz: SomeClass; 
} 

folgendes bar.d.ts Hat:

// bar.d.ts 
// ERROR: Cannot find name IBaseInterface 
interface IDerivedInterface extends IBaseInterface { 

} 

Was bin ich?

Antwort

3

Das Hinzufügen einer import zu Ihrer Datei macht es zu einem Modul, was bedeutet, dass in der aktuellen Datei definierte Dinge für Dinge im globalen Gültigkeitsbereich nicht sichtbar sind.

Um dies zu beheben, exportieren IBaseInterface und es aus der Datei importieren Sie IDerivedInterface in definiert haben. Zum Beispiel könnten Sie

// foo.d.ts 
import { SomeClass } from 'my-module'; 

export interface IBaseInterface { 
    baz: SomeClass; 
} 

und

// bar.d.ts 
import { IBaseInterface } from './foo'; 

interface IDerivedInterface extends IBaseInterface { 

} 
schreiben