Hier ist ein Beispiel. All das localforage
Paket exportiert ist eine Instanz der privaten LocalForage
Klasse. Die jeweilige Typisierung hat eine gleichnamige Schnittstelle, wird aber auch nicht exportiert.Import private Schnittstelle in Typescript
Trotz LocalForage
Schnittstelle wird es nicht exportiert, TypeScript und IDE (WebStorm) scheinen es zu erlauben, es von '@ types/localforage' zu importieren. Aber der Typ wird nicht angewendet.
Dieser Code hat keine Fusseln Probleme und keine Importfehler vor customForage.setDriver(...)
Linie:
import * as localForage from 'localforage';
import { LocalForage } from '@types/localforage';
var customForage: LocalForage = localForage;
customForage.setDriver('custom');
aber Ergebnisse in Fehler:
Unresolved function or method setDriver()
Während dieser Code
import * as localForage from 'localforage';
/// <reference path="../../../node_modules/@types/localforage/index.d.ts"/>
var customForage: LocalForage = localForage;
customForage.setDriver('custom');
identifiziert erfolgreich setDriver
Methode.
Ich war glücklich, als @types
endlich angekommen, und es ist umständlich, relative Pfade für index.d.ts
zu pflegen.
Kann dieser Fall in Dateien, die die Schnittstelle verwenden, ohne <reference path="../../... />
behandelt werden? Die Frage ist nicht auf bestimmte localforage
Paket beschränkt, aber es ist ein gutes Beispiel für das Problem.
Und wenn Sie nur den zweiten Import und die '///
Paleo
Es ist nicht notwendig, '@ type' direkt im Code zu importieren, es wird nach Namen aufgelöst; und Dateien aus '" node_modules/@ types/* "' sind standardmäßig immer im Kompilierbereich enthalten, auch wenn node_modules in tsconfig.json ausgeschlossen sind. Aber "@ types" -Feature wird nur seit 2016.3 unterstützt, also müssen Sie sicherstellen, dass Sie die neueste WebStorm-Version – lena
@lena Thanks verwenden. Tatsächlich hat 2016.3 dieses Problem nicht und verwendet '@ type' automatisch. Ich denke, das Upgrade löst das Problem, und das ist normales Verhalten für TS 2.x. – estus