visual studio code - WebView-utvidelse i TypeScript


I kodeeksemplet (catcoding) er logikken for bakgrunnswebview skrevet som en anonym funksjon i JavaScript, men jeg ønsker å bygge denne bakgrunnslogikken i Typescript.

Jeg har forsøkt å gjenskape denne logikken som en TypeScript-pakke med RequireJS, men jeg får det ikke til å fungere.

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

…

}();

Jeg forventer å bygge denne støttende WebView-logikken i TypeScript slik at jeg får statisk typekontroll.

Svar #1

Hvis du skriver webvisningsskriptene dine i TypeScript, må du kompilere dem til JavaScript ved å bruke TypeScript-kompilatoren eller webpack (se GitHub pull request-utvidelsen for et eksempel).

VS Code inkluderer ikke TypeScript-typinger for VS Code API tilgjengelig for skript inne i webvisninger, men alt du trenger å gjøre i TypeScript er å erklære at en global kalt acquireVsCodeApi eksisterer:

declare var acquireVsCodeApi: any;

const vscode = acquireVsCodeApi();

// Do stuff with api like getting the state
vscode.getState();

Svar #2

Jeg støtte på det samme problemet. Min nåværende løsning innebærer å kalle det dynamisk via Function

const vsCodeFunction = Function(`
  // forgive me for my sins
  if (typeof acquireVsCodeApi == 'function') {
    return acquireVsCodeApi();
  } else {
    return undefined;
  }
  `);
const vscode = vsCodeFunction();

Relaterte artikler