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

  • リリースバージョン: Xanadu
  • 更新日 2024年08月01日
  • 所要時間:6分
  • 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

    このタスクについて

    ServiceNow SDK バージョン 2.0.1 以降では、now-sdk create コマンドと now-sdk convert コマンドのテンプレートパラメーターを使用して、TypeScript を使用するように構成されたアプリケーションを作成または変換できます。詳細については、「ServiceNow SDK CLI」を参照してください。モジュールで TypeScript を使用するように既存のアプリケーションを更新するには、次の手順に従います。

    手順

    1. アプリケーションの package.json ファイルで、次の変更を行います。
      1. 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"
          }
      2. scripts オブジェクトで、インスタンスで使用するために TypeScript (.ts) モジュールを JavaScript (.js) にコンパイルするようにビルドスクリプトを更新します。
        {
            "scripts": {
                "build": "tsc -b && now-sdk build",
            }
        }
    2. アプリケーションのベースディレクトリに、アプリケーションをコンパイルするためのオプションを定義する tsconfig.json ファイルを追加します。
      {
          "compilerOptions": {
              "rootDir": "src",
              "outDir": "dist/src",
              "module": "nodenext",
              "target": "es2021",
              "moduleResolution": "nodenext",
          },
          "include": ["src/**/*.ts"],
          "exclude": ["node_modules", "src/fluent/**"],
          "references": []
      }
    3. アプリケーションの now.config.json ファイルで、transpiledSourceDir パラメーターを tsconfig.json ファイルの outDir パラメーターと同じ値に設定します。
      {
        "transpiledSourceDir": "dist/src",
        "scope": "x_snc_example_app",
        "scopeId": "2f8400eb07426110f736e28f69d3017a"
      }
    4. src/server ディレクトリに、モジュール コードを格納する .ts ファイルを少なくとも 1 つ追加します。
    5. TypeScript ファイルを JavaScript モジュールにコンパイルし、アプリケーションをビルドします。
      1. アプリケーションディレクトリから、システム上のコマンドラインツールを開きます。
      2. 次のコマンドを入力します。
        npm run build

    API のタイプ定義の追加

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

    始める前に

    必要なロール:admin

    このタスクについて

    ServiceNow SDK アプリケーションでモジュールを直接宣言して、先行入力をサポートするために API へのスタブアクセスを行います。これらのモジュールはアプリケーションパッケージにはパッケージ化されませんが、アプリケーションのソースコントロールリポジトリで追跡し、開発者間で共有できます。

    手順

    1. アプリケーションディレクトリで、タイプ定義用の TypeScripe (.ts) ファイルを追加します。
    2. 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()
      	}
      }
    3. アプリケーションの 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)
      }
      注:
      モジュールは、グローバルスクリプト可能オブジェクトまたは同じアプリケーションスコープ内のスクリプト可能オブジェクトにのみアクセスできます。