2016-12-23 45 views
1
參考類型模塊的

VisualStudioCodeVSCode - 從JS

使用Visual Studio代碼爲JS節目我可以從打字稿訪問某些功能;因爲編輯器會解析所有的文件,它會幫助我處理變量類型。例如,它會識別以下:

any.js

/** 
* @param {string} s 
* @return {Promise<Person>} 
*/ 
function foo(s){ ... } 

foo('Jhon').then((p) => p.name) 

index.d.ts

interface Person { 
    name: string 
    surname: string 
} 

現在,我想訪問類型(接口,類。 .. whatever)node.d.ts聲明文件;例如它宣佈聲明Readable接口的模塊stream

我正在尋找這樣的事情:

const stream = require('stream') 

/** 
* @param {stream.Readable} stream 
*/ 
function goo(stream) { ... } 

但是,這並不work.I've與嘗試:

  • {} internal.Readable
  • {stream.Readable }
  • {Node.stream.Readable}
  • {Node.Readable}
  • {Node.internal.Readable}

回答

2

從VS Code 1.18開始,當使用require和JSDoc類型時,這是一個限制。我已經打開this issue追蹤這個專門

一些可能的解決方法:

使用import

import * as stream from 'stream' 

/** 
* @param {stream.Readable} stream 
*/ 
function goo(stream) { ... } 

或導入Readable明確:

const stream = require('stream') 
const {Readable} = require('stream') 

/** 
* @param {Readable} stream 
*/ 
function goo(stream) { ... } 

https://github.com/Microsoft/TypeScript/issues/14377還跟蹤允許您指定模塊直接在jsdocs中導入。