ServiceNow SDK で JavaScript モジュールの TypeScript を使用する

  • リリースバージョン: Zurich
  • 更新日 2025年07月31日
  • 所要時間:7分
  • ServiceNow SDK で JavaScript モジュールを作成する場合は、TypeScript を使用します。

    TypeScript は、静的型指定と型注釈を使用して、開発者が Visual Studio Code でコードを記述しているときにエラーを早期に検出できるようにサポートします。

    TypeScript の使用に関する一般的な情報については、typescriptlang.org Web サイトの TypeScript ドキュメントを参照してください。

    JavaScript モジュールの TypeScript を使用する

    アプリケーションに TypeScript のサポートを追加することで、JavaScript モジュールの TypeScript を使用します。

    始める前に

    TypeScript バージョン 4.8.4 以降をインストールします。インストール手順については、typescriptlang.org Web サイトの「Download TypeScript (TypeScript のダウンロード)」を参照してください。

    必要なロール:admin

    このタスクについて

    、TypeScript テンプレートを使用して作成されていない既存のアプリケーションを更新してモジュールで TypeScript を使用するには、次の手順に従います。ServiceNow SDK バージョン 3.0 以降、アプリケーションはデフォルトのコンパイラオプションを使用して、デフォルトで JavaScript モジュールでの TypeScript の使用をサポートしています。ビルドプロセス中に TypeScript を JavaScript にトランスパイルするためのカスタムオプションを備えた tsconfig.json ファイルを使用するには、now.config.json ファイルで tsconfigPath パラメーターを設定します。アプリケーションをビルドする前にカスタムトランスパイルステップを使用する場合は、now.config.jsonファイルで modulePaths パラメーターを設定します。

    手順

    1. Visual Studio Code で、スコープ対象のアプリケーションのディレクトリを開きます。
    2. アプリケーションの package.json ファイルを開き devDependencies オブジェクトで TypeScript パッケージとバージョンを追加し、
      "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"
        }
    3. アプリケーションの ソース/サーバー ディレクトリに、アプリケーションをコンパイルするためのオプションを定義する tsconfig.json ファイルを追加します。
      {
          "compilerOptions": {
              "rootDir": "./",
              "outDir": "../../dist/server",
              "module": "es2022",
              "target": "es2022",
              "moduleResolution": "bundler",
              "allowJs": true,
              "declaration": false,
              "sourceMap": false,
              "skipLibCheck": true,
              "allowImportingTsExtensions": true,
              "noEmit": true
          },
          "include": [
              "./**/*.ts",
              "../../@types/**/*.modules.d.ts"
          ],
          "exclude": [
              "**/*.now.ts"
          ]
      }
    4. アプリケーションのnow.config.jsonファイルで、tsconfigPath パラメーターを JavaScript モジュールのtsconfig.jsonの場所に設定します。します。
      {
        "scope": "x_snc_example_app",
        "scopeId": "2f8400eb07426110f736e28f69d3017a",   
        "name": "ExampleApp",
        "tsconfigPath": "./src/server/tsconfig.json"
        
      }
    5. src/server ディレクトリに、モジュールコードを含む少なくとも 1 つの .ts ファイルを追加します。
      モジュールの作成の詳細については、「 ServiceNow SDK を使用してアプリケーションで JavaScript モジュールを作成して使用する」を参照してください。
    6. TypeScript ファイルを JavaScript モジュールにコンパイルし、アプリケーションをビルドします。
      1. アプリケーションディレクトリから、システム上のコマンドラインツールを開きます。
      2. 次のコマンドを入力します。
        now-sdk build

    API のタイプ定義の追加

    Glide API の外部にある API およびスクリプト可能オブジェクトの先行入力サポートを取得します。

    始める前に

    必要なロール:admin

    このタスクについて

    注:
    now-sdk dependencies コマンドを使用して、ほとんどの API、スクリプトインクルード、およびその他のスクリプト可能オブジェクトの型定義をダウンロードできます。詳細については、「モジュールとスクリプトの依存関係をダウンロード」を参照してください。

    now-sdk 依存関係がダウンロードしない型定義を手動で追加するには、次の手順に従います。ServiceNow SDKアプリケーションでモジュールを直接宣言して、先行入力サポートの API へのアクセスをスタブできます。これらのモジュールはアプリケーションパッケージにはパッケージ化されませんが、アプリケーションのソースコントロールリポジトリで追跡し、開発者間で共有できます。

    手順

    1. Visual Studio Code で、スコープ対象のアプリケーションのディレクトリを開きます。
    2. アプリケーションで、型定義用の TypeScripe (.ts) ファイルを追加します。
    3. TypeScript ファイルで、API とスクリプト可能オブジェクトのモジュールを宣言します。
      この例では、API 名空間 (sn_app_api) を使用して API のモジュールを宣言します。
      declare module '@servicenow/glide/sn_app_api' {
      	class AppStoreAPI {
      		static canUpgradeAnyStoreApp(): boolean
      	}
      } 
      この例では、スクリプトインクルードのスコープ (x_1234_scope) を使用して、スクリプトインクルードで定義されたオブジェクトにアクセスするためのモジュールを宣言します。
      declare module '@servicenow/glide/x_1234_scope' {
      	class MyLogItemClass {
      		myLogFunction()
      	}
      }
    4. アプリケーションの JavaScript モジュールで、宣言されたモジュールをインポートします。
      この例では、AppStoreAPI に対して宣言されたモジュールをインポートします。
      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!`)
      	}
      }
      この例では、MyLogItemClass オブジェクトに対して宣言されたモジュールをインポートします。
      import { MyLogItemClass } from '@servicenow/glide/x_1234_scope'
      
      export const myLogFunction = function (status) {
      	const myLogItem = new MyLogItemClass()
      	myLogItem.myLogFunction(status)
      }
      注:
      モジュールは、グローバルスクリプト可能オブジェクトまたは同じアプリケーションスコープ内のスクリプト可能オブジェクトにのみアクセスできます。