Расширение WebView в TypeScript - PullRequest
0 голосов
/ 10 января 2019

В примере кода (catcoding) логика поддержки веб-просмотра написана как анонимная функция в JavaScript, однако я хотел бы построить эту логику в Typescript.

Я устал воспроизводить эту логику как пакет для машинописи с requireJS, но не могу заставить это работать.

// This script will be run within the webview itself
// It cannot access the main VS Code APIs directly.
(function () {
  const vscode = acquireVsCodeApi();

…

}();

Я рассчитываю построить эту базовую логику WebView в TypeScript, чтобы получить статическую проверку типов.

Ответы [ 3 ]

0 голосов
/ 16 февраля 2019

Я столкнулся с той же проблемой. Мой текущий взлом состоит в том, чтобы вызвать его динамически через Function

const vsCodeFunction = Function(`
  // forgive me for my sins
  if (typeof acquireVsCodeApi == 'function') {
    return acquireVsCodeApi();
  } else {
    return undefined;
  }
  `);
const vscode = vsCodeFunction();
0 голосов
/ 17 февраля 2019

Если вы пишете свои скрипты веб-просмотра на TypeScript, вы должны скомпилировать их в JavaScript с помощью компилятора машинописи или веб-пакета (см., Например, расширение для запросов на github *1002*).

VS Code не включает типизацию TypeScript для API VS Code, доступного для сценариев внутри веб-просмотров, но все, что вам нужно сделать в вашем TypeScript, - это объявить, что существует глобальное имя acquireVsCodeApi:

declare var acquireVsCodeApi: any;

const vscode = acquireVsCodeApi();

// Do stuff with api like getting the state
vscode.getState();
0 голосов
/ 11 января 2019

Класс WebView не может передавать код TS, поэтому вы должны написать его код в JS, никак не обойтись.

...