Dans l'exemple de code (catcoding), la logique de backing webview est écrite comme une fonction anonyme en JavaScript, mais j'aimerais construire cette logique de backing dans Typescript.
Je suis fatigué de reproduire cette logique sous forme de package dactylographié avec requireJS mais je n'arrive pas à faire fonctionner cela.
// This script will be run within the webview itself
// It cannot access the main VS Code APIs directly.
(function () {
const vscode = acquireVsCodeApi();
â¦
}();
Je prévois de construire cette logique de support WebView dans Tapez du script pour que j'obtienne la vérification de type statique.
3 Réponses :
La classe WebView ne peut pas transpiler le code TS, vous devez donc écrire son code en JS, pas moyen de contourner cela.
J'ai rencontré le même problème. Mon hack actuel consiste à l'appeler dynamiquement via Function a > const vsCodeFunction = Function(`
// forgive me for my sins
if (typeof acquireVsCodeApi == 'function') {
return acquireVsCodeApi();
} else {
return undefined;
}
`);
const vscode = vsCodeFunction();
Si vous écrivez vos scripts de vue Web en TypeScript, vous devez les compiler en JavaScript à l'aide du compilateur ou du webpack typescript (voir le extension de requêtes d'extraction github pour un exemple).
VS Code n'inclut pas les typages TypeScript pour l'API VS Code disponible pour les scripts à l'intérieur des vues Web, mais tout ce que vous avez à faire dans votre TypeScript déclare qu'il existe un global appelé AcquérirVsCodeApi :
declare var acquireVsCodeApi: any; const vscode = acquireVsCodeApi(); // Do stuff with api like getting the state vscode.getState();
Je vous remercie! Cela aide vraiment à me débarrasser du bruit inutile :) J'ai également dû déclarer window et document , mais je pense que const correspond mieux à la nouvelle syntaxe ( eh bien, c'est une opinion): declare const window: any, document: any, acquiertVsCodeApi: any;