Projekt-Setup
Damit VS Code die Typings findet, braucht einunser Workspace zweidrei Dinge: eine jsconfig.json im Root undRoot, den Ordner typings/ mit den .d.ts-Dateien.Dateien Beidesvon otris und den Ordner typings_dexpro/ mit unseren eigenen Deklarationen. jsconfig.json und typings/ legt die DOCUMENTS-Extension (vscode-documentsos) beim Einrichten des Projekts an.an, typings_dexpro/ pflegen wir selbst.
jsconfig.json
Die jsconfig.json sagt VS Code, welche Dateien zum Projekt gehören und welche JavaScript-Version gilt. Unsere aktuelle Konfiguration:
{
"compilerOptions": {
//"checkJs": true,
"checkJs"alwaysStrict": true,
"target": "es2016",
"lib": ["es2016", "scripthost"],
"baseUrl": ".",
"paths": {
"DexRecordLib": ["./src/DexRecord.cat/DexRecordLib.js"],
"DexRecordReference": ["./src/DexDocumentTree.cat/DexRecordReference.mjs"],
"gadgetAPI": ["typings/gadgetApi.d.ts"],
"otrUpgrade_TypeDef": ["typings/otrUpgrade_TypeDef.d.ts"]
// ... weitere Bibliotheken
},
"typeRoots": ["./typings"]
},
"include": [
"node_modules/@types/**/*.d.ts",
"src/**/*.js",
"src/**/*.mjs",
"typings/**/*.d.ts",
"typings_dexpro/**/*.d.ts"
]
}
includebindet unsere Skripte (.jsund.mjsinsrc/), die otris-Typings (typings/) undalleunsereTypingseigenen () ein. Nur was hier steht, kennt IntelliSense.typings/typings_dexpro/liblässt bewusstdomweg. Sonst kollidieren die Browser-KlassenFileundDocumentmit den gleichnamigen DOCUMENTS-Klassen.target: es2016schaltet Autovervollständigung für ES6-Features wieMapoderfor...offrei. Achtung: Nicht alles davon unterstützt der DOCUMENTS-Server.prüft jede Datei auscheckJscheckJs: trueincludeauf Typfehler, nicht nur für IntelliSense. Die Meldungen erscheinen in der Problems-Ansicht.alwaysStrict: trueprüft jede Datei so, als stünde"use strict"darüber. Das istauskommentiert.nurVSLinting:CodeAufzeigtdemalsoServerIntelliSenseläuftan,einmeldetSkriptabererstkeinestrikt,Typfehler.wennWie"usemanstrict";dieimPrüfungSkriptgezieltselbsteinschaltet,steht.baseUrlunten.+pathsordnen Modulnamen Dateien zu: unsere Bibliotheken (DexRecordLib→src/…) und Typings, deren Dateiname vom Modulnamen abweicht (gadgetAPI→gadgetApi.d.ts).typeRootssorgt dafür, dass Typings mit gleichem Datei- und Modulnamen (otrAssert,util.otrLogger) auch ohnepaths-Eintrag gefunden werden.
Der Ordner typingstypings/
|
Datei |
Inhalt |
Woher |
|---|---|---|
|
|
Die komplette PortalScripting-API: |
Extension |
|
|
Erweiterungen im Namespace |
Extension |
|
|
Gadget-API im Namespace |
Extension |
|
|
Client-SDK |
Extension |
|
|
Unsere Mappentypen, Felder, Register und Ordnernamen, erzeugt aus dem DOCUMENTS-Server |
Generiert aus dem Server |
|
|
Typings der otris-Bibliotheken (mit deutscher Doku) |
Mit den Bibliotheken ausgeliefert |
Wichtig: Die Dateien in typings/ werden nicht von Hand bearbeitet, denn die Extension überschreibt sie beim nächsten Aktualisieren. Eigene Typen gehören in JSDoc-Kommentare im Skript oder in einen eigenenunseren Ordner (siehe "Bibliotheken und eigene .d.ts-Dateien").types/typings_dexpro/
Aktualisiert werden die Typings über die Befehlspalette (Cmd/Strg+Shift+P) oder per Rechtsklick auf den Ordner typings/ im Explorer:
- documentsOS: Install Typings installiert die Standard-Typings der API (Rechtsklick auf das Projekt-Root).
- documentsOS: Get Typings lädt die API-Typings passend zur Serverversion.
- documentsOS: Get File Type Typings erzeugt
fileTypes.d.tsneu aus den Mappentypen des Servers. Nach jeder Änderung an Mappentypen oder Feldern ausführen.