我带有定义文件的模块Xpto的图像:
// node_modules/@types/xpto.d.ts
export interface Vertx {
createHttpServer(handler: () => void) : void;
}
并声明一个助手来跟踪我的全局:
// runtime.d.ts
import {Xpto} from 'xpto';
declare const xpto: Xpto;
最后在我的JS文件中:
/// <reference path="runtime.d.ts" />
// @ts-check
xpto.createHttpServer(function (req) { ... });
出于某种原因,我在vscode上遇到错误:Cannot find name "xpto"
但是如果我导入类型会有效:
import {xpto} from "runtime"
然而,这会产生破坏的代码,因为没有真正的运行时模块,它只是一种方式来声明全局范围内哪些变量可用。
答案 0 :(得分:1)
我认为问题是import
和export
将d.ts
文件转换为模块声明。这就是为什么全局版本不起作用,但import
的版本不起作用。
尝试使用xpto
明确声明declare global
为全局:
import {Xpto} from 'xpto';
declare global {
declare const xpto: Xpto;
}