TypeScript in JavaScript-Modulen mit verwenden ServiceNow

  • Freigeben Version: Xanadu
  • Aktualisiert 1. August 2024
  • 3 Minuten Lesedauer
  • Verwenden Sie TypeScript, wenn Sie JavaScript-Module mit ServiceNowerstellen.

    TypeScript verwendet statische Typisierung und Typanmerkungen, um Entwickler dabei zu unterstützen, Fehler früher beim Schreiben von Code in Visual Studio Codezu erkennen.

    Allgemeine Informationen zur Verwendung von TypeScript finden Sie in der TypeScript-Dokumentation auf der Website typescriptlang.org.

    Verwenden Sie TypeScript in JavaScript-Modulen

    Verwenden Sie TypeScript in JavaScript-Modulen, indem Sie Ihrer Anwendung Unterstützung für TypeScript hinzufügen.

    Vorbereitungen

    TypeScript Version 4.8.4 oder höher installieren Anweisungen zur Installation finden Sie unter TypeScript herunterladen auf der Website typescriptlang.org.

    Erforderliche Rolle: admin

    Warum und wann dieser Vorgang ausgeführt wird

    Mit ServiceNow Version 2.0.1 oder höher können Sie Anwendungen erstellen oder konvertieren, die für die Verwendung von TypeScript konfiguriert sind. Verwenden Sie dazu den Parameter template in den Befehlen now-sdk create und now-sdk konvertieren. Weitere Informationen finden Sie unter ServiceNow CLI. Befolgen Sie dieses Verfahren, um vorhandene Anwendungen für die Verwendung von TypeScript in Modulen zu aktualisieren.

    Prozedur

    1. Nehmen Sie in der Datei „ package.json “ der Anwendung die folgenden Änderungen vor.
      1. Fügen Sie im Objekt „devDependencies“ das TypeScript-Paket und die -Version hinzu.
        "devDependencies": {
            "typescript": "<version>",
            "@servicenow/sdk": "2.0.0",
            "@servicenow/glide": "26.0.1",
            "eslint": "8.50.0",
            "@servicenow/eslint-plugin-sdk-app-plugin": "2.0.0"
          }
      2. Aktualisieren Sie im Skripts -Objekt das Build-Skript, um TypeScript-Module (.ts) in JavaScript (.js) zu kompilieren, um sie in der Instanz zu verwenden.
        {
            "scripts": {
                "build": "tsc -b && now-sdk build",
            }
        }
    2. Fügen Sie im Basisverzeichnis Ihrer Anwendung die Datei tsconfig.json hinzu, die die Optionen zum Kompilieren der Anwendung definiert.
      {
          "compilerOptions": {
              "rootDir": "src",
              "outDir": "dist/src",
              "module": "nodenext",
              "target": "es2021",
              "moduleResolution": "nodenext",
          },
          "include": ["src/**/*.ts"],
          "exclude": ["node_modules", "src/fluent/**"],
          "references": []
      }
    3. Legen Sie in der Datei now.config.json der Anwendung den Parameter transpiledSourceDirauf den gleichen Wert fest wie den Parameter outDir in der Datei tsconfig.json.
      {
        "transpiledSourceDir": "dist/src",
        "scope": "x_snc_example_app",
        "scopeId": "2f8400eb07426110f736e28f69d3017a"
      }
    4. Fügen Sie im Verzeichnis „ src/server “ mindestens eine .ts -Datei hinzu, die den Modulcode enthält.
    5. Kompilieren Sie TypeScript-Dateien in JavaScript-Module, und erstellen Sie Ihre Anwendung.
      1. Öffnen Sie in Ihrem Anwendungsverzeichnis ein Befehlszeilentool auf Ihrem System.
      2. Geben Sie den folgenden Befehl ein:
        npm run build

    Fügen Sie Typdefinitionen für APIs hinzu

    Erhalten Sie Vorauseingabe-Unterstützung für APIs und skriptfähige Objekte außerhalb von Glide-APIs.

    Vorbereitungen

    Erforderliche Rolle: admin

    Warum und wann dieser Vorgang ausgeführt wird

    Deklarieren Sie Module direkt in der Anwendung ServiceNow, um den Zugriff auf die APIs für Typeahead-Unterstützung zu stuben. Diese Module sind nicht im Anwendungspaket enthalten, können jedoch in einem Quellcodeverwaltungs-Repository für die Anwendung nachverfolgt und von Entwicklern gemeinsam genutzt werden.

    Prozedur

    1. Fügen Sie im Anwendungsverzeichnis eine TypeScript-Datei (.ts) für Typdefinitionen hinzu.
    2. Deklarieren Sie in Ihrer TypeScript-Datei Module für APIs und skriptfähige Objekte.
      In diesem Beispiel wird ein Modul für eine API mithilfe des API-Namespace (sn_app_api) deklariert:
      declare module '@servicenow/glide/sn_app_api' {
      	class AppStoreAPI {
      		static canUpgradeAnyStoreApp(): boolean
      	}
      } 
      Dieses Beispiel deklariert ein Modul für den Zugriff auf Objekte, die in Skripteinbindungen definiert sind, indem der Umfang der Skripteinbindung (x_1234_scope) verwendet wird:
      declare module '@servicenow/glide/x_1234_scope' {
      	class MyLogItemClass {
      		myLogFunction()
      	}
      }
    3. Importieren Sie die angegebenen Module in den JavaScript-Modulen in Ihrer Anwendung.
      In diesem Beispiel wird das deklarierte Modul für die StoreAPI importiert.
      import { gs } from '@servicenow/glide'
      import { AppStoreAPI } from '@servicenow/glide/sn_app_api'
      
      export const canUpgradeStoreApp = function () {
      	var canUpgrade = AppStoreAPI.canUpgradeAnyStoreApp()
      	if (canUpgrade) {
      		gs.addInfoMessage(`You can upgrade store apps!`)
      	} else {
      		gs.addInfoMessage(`You cannot upgrade store apps!`)
      	}
      }
      In diesem Beispiel wird das deklarierte Modul für das MyLogItemClass-Objekt importiert.
      import { MyLogItemClass } from '@servicenow/glide/x_1234_scope'
      
      export const myLogFunction = function (status) {
      	const myLogItem = new MyLogItemClass()
      	myLogItem.myLogFunction(status)
      }
      Hinweis:
      Module können nur auf globale skriptfähige Objekte oder skriptfähige Objekte im gleichen Anwendungsbereich zugreifen.