2017-11-10 227 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; 
} 
相關問題