如何为ts-check正确声明给定模块的typescript全局类型?

时间:2017-11-10 22:20:18

标签: visual-studio-code typescript-typings

我带有定义文件的模块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"

然而,这会产生破坏的代码,因为没有真正的运行时模块,它只是一种方式来声明全局范围内哪些变量可用。

1 个答案:

答案 0 :(得分:1)

我认为问题是importexportd.ts文件转换为模块声明。这就是为什么全局版本不起作用,但import的版本不起作用。

尝试使用xpto明确声明declare global为全局:

import {Xpto} from 'xpto';

declare global { 
    declare const xpto: Xpto;
}