我不确定这个极端边缘案例或者其他什么,但我似乎无法找到关于如何做到这一点的直截了当的文档(或者我真的不了解可用的内容):对外部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