Код Visual Studio, использующий JavaScript с файлом TypeScript в качестве справочного материала для Intellisense - PullRequest
0 голосов
/ 06 марта 2019

В настоящее время я использую VisualStudioCode для написания приложения nodejs, и я использую комментарии к документам, чтобы связать параметры функций с классами, чтобы IntelliSense мог сработать, но я столкнулся с некоторыми проблемами, когда хочу использовать классы / типымодули.

Как я в настоящее время обращаюсь с вещами:

class Foo{
    constructor(){
      this.bar = "value"
    }
}

/**
 * @param {Foo} parameter 
 */
function foobar(parameter){
  parameter.bar.charAt(0); //parameter.bar now with IntelliSense
}

В foobar Теперь я могу видеть все доступные атрибуты / функции, которые я могу вызвать bar.

Теперь, если где-то в модуле узла есть файл TypeScript:

declare module 'coollib' {
  namespace lib {
    type CoolLibType = {
      begin?: string | number | Date;
      liveBuffer?: number;
      requestOptions?: {};
      highWaterMark?: number;
      lang?: string;
    }
  }
  export = lib;
}

Как я могу сослаться на это?Я хотел бы сделать что-то подобное в моем файле JavaScript:

const CoolLibType = require('coollib')
/**
 * @param {CoolLibType} obj 
 */
function foobar(obj){
  obj.lang.charAt(0); //with cool IntelliSense
}

Но это, очевидно, не работает так.

1 Ответ

0 голосов
/ 06 марта 2019

Используйте так называемый тип импорта .

/**
 * @param {typeof import('coollib')} obj
 */
function foobar(obj) {
  obj.lang.charAt(0); //with cool IntelliSense
}

Подробнее о типах импорта см. В Замечания к выпуску TypeScript 2.9 .

...