我不確定這個極端邊緣案例或者其他什麼,但我似乎無法找到關於如何做到這一點的直截了當的文檔(或者我真的不瞭解可用的內容):對外部JavaScript庫使用TypeScript聲明
我正在開發離子應用程序,並且我需要使用ALKMaps JavaScript庫(類似於Google Maps API)的一部分。爲此,我創建了一個本地npm模塊,並在其中創建了一個由https://www.typescriptlang.org/docs/handbook/declaration-files/by-example.html#objects-with-properties推薦的alkmaps.d.ts文件)。但是,我似乎無法弄清楚如何正確地將其導入到角碼中。同一個文件表明,使用<reference path=''>
標籤並不好,但這是唯一似乎滿足tsc編譯器的東西。
我的聲明文件,alkmaps.d.ts,看起來像(不包括內爲簡潔起見):
declare namespace ALKMaps {
export class Map { ... }
...
}
我試圖將其導入到像一個文件:
import { ALKMaps } from 'alkmaps'; // Error: File '.../alkmaps.d.ts' is not a module
我也嘗試了以下,但得到了同樣的錯誤。
import ALKMaps = require('alkmaps');
使用參考標籤,似乎此模塊中工作,但再利用該模塊還拋出項目「是不是一個模塊」的錯誤(這可能需要建立單獨的問題)
從https://github.com/Microsoft/TypeScript/issues/11420我發現使用export = ALKMaps
或export as namespace ALKMaps
但將其添加到我的聲明文件導致不同的錯誤,而不是。
任何人都可以請直接解釋如何使用代表外部JS庫在打字稿節點模塊中的聲明文件?
從'alkmaps'和import ALKMaps = require('alkmaps')'進口{ALKMaps}'在運行時做兩件非常不同的事情。你是什麼意思? –
那是我對node.js有限理解的一個方面。我嘗試了這兩種形式的導入(當然不是同一時間),嘗試用「不是模塊」錯誤糾正問題。 – Mike