2017-11-10 228 views
1

形象地说,我有一个模块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" 

但是,由于没有真正的运行时模块,这会产生破损的代码,这只是一种方式来声明哪些变量在全局范围内可用。

回答

1

我认为问题是importexport使d.ts文件进入模块声明。这就是为什么全球版本不起作用,但import的版本。

尝试使用declare global明确声明xpto作为一个全球性的:

import {Xpto} from 'xpto'; 

declare global { 
    declare const xpto: Xpto; 
} 
相关问题