如何正确地为ts-check声明给定模块的typescript全局类型?
问题描述:
形象地说,我有一个模块Xpto与定义文件:如何正确地为ts-check声明给定模块的typescript全局类型?
// 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"
但是,由于没有真正的运行时模块,这会产生破损的代码,这只是一种方式来声明哪些变量在全局范围内可用。
答
我认为问题是import
和export
使d.ts
文件进入模块声明。这就是为什么全球版本不起作用,但import
的版本。
尝试使用declare global
明确声明xpto
作为一个全球性的:
import {Xpto} from 'xpto';
declare global {
declare const xpto: Xpto;
}