2016-12-23 2 views
1

VisualStudioCodeVSCode - Ссылочная тип модуля из JS

Использование Visual Studio Код для JS программирования я могу получить доступ к некоторым из функций машинописи; поскольку редактор будет анализировать все файлы .d.ts, это поможет мне с переменными типами. Например, он делает признать следующее:

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 
} 

Теперь я хочу, чтобы получить доступ к типам (интерфейсы, классы. .. независимо от того, что объявлено в node.d.ts файл декларации; например, он объявляет модуль stream, который объявляет интерфейс Readable.

Я ищу что-то вроде этого:

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

В В.С. 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.

Смежные вопросы