Uso de TypeScript em módulos JavaScript com o ServiceNow SDK

  • Versão de lançamento: Yokohama
  • Atualizado 30 de jan. de 2025
  • 2 min. de leitura
  • Use o TypeScript ao criar módulos JavaScript com o ServiceNow SDK.

    O TypeScript usa digitação estática e anotações de tipo para ajudar os desenvolvedores a detectar erros com antecedência ao escrever código em Visual Studio Code.

    Para obter informações gerais sobre como usar o TypeScript, consulte a Documentação do TypeScript no site typescriptlang.org.

    Usar TypeScript em módulos JavaScript

    Use TypeScript em módulos JavaScript adicionando suporte para TypeScript em sua aplicação.

    Antes de Iniciar

    Instale o TypeScript versão 4.8.4 ou posterior. Para obter instruções de instalação, consulte Download do TypeScript no site typescriptlang.org.

    Função necessária: administrador

    Por Que e Quando Desempenhar Esta Tarefa

    Com a ServiceNow SDK versão 2.0.1 ou posterior, você pode configurar aplicações para usar TypeScript em módulos JavaScript por padrão com o parâmetro de modelo nos comandos now-sdk create e now-sdk convert. Para obter mais informações, consulte ServiceNow SDK CLI. Siga este procedimento para atualizar as aplicações existentes para usar o TypeScript em módulos.

    Procedimento

    1. No arquivo package.json da aplicação, faça as seguintes mudanças.
      1. No objeto devDependencies, adicione o pacote TypeScript e a versão.
        "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. No objeto de scripts, atualize o script de compilação para compilar módulos TypeScript (.ts) para JavaScript (.js) para uso na instância.
        {
            "scripts": {
                "build": "tsc -b && now-sdk build",
            }
        }
    2. No diretório base da aplicação, adicione um arquivo tsconfig.json que define as opções para compilar a aplicação.
      {
          "compilerOptions": {
              "rootDir": "src/server",
              "outDir": "dist/server",
              "module": "nodenext",
              "target": "es2021",
              "moduleResolution": "nodenext",
          },
          "include": ["src/**/*.ts"],
          "exclude": ["node_modules", "src/fluent/**"],
          "references": []
      }
    3. No arquivo now.config.json da aplicação, defina o parâmetro modulePaths para mapear os arquivos de origem do TypeScript para os módulos de saída com base em seu tsconfig.json.
      {
        "scope": "x_snc_example_app",
        "scopeId": "2f8400eb07426110f736e28f69d3017a",   
        "name": "ExampleApp"
        "modulePaths": {
            "src/server/*.ts": "dist/server/*.js"
         }
      }
    4. No diretório src/server, adicione pelo menos um arquivo .ts para conter o código do módulo.
    5. Compile arquivos TypeScript em módulos JavaScript e crie sua aplicação.
      1. No diretório da aplicação, abra uma ferramenta de linha de comando no sistema.
      2. Insira o seguinte comando:
        npm run build

    Adicionar definições de tipo para APIs

    Obtenha suporte autocompletável para APIs e objetos programáveis fora das APIs do Glide.

    Antes de Iniciar

    Função necessária: administrador

    Por Que e Quando Desempenhar Esta Tarefa

    Declare módulos diretamente na aplicação ServiceNow SDK para interromper o acesso às APIs para suporte a autocompletável. Esses módulos não são empacotados no pacote de aplicações, mas podem ser rastreados em um repositório de controle de código-fonte para a aplicação e compartilhados entre desenvolvedores.

    Procedimento

    1. No diretório da aplicação, adicione um arquivo TypeScripe (.ts) para definições de tipo.
    2. No arquivo TypeScript, declare módulos para APIs e objetos programáveis.
      Este exemplo declara um módulo para uma API usando o namespace de API (sn_app_api):
      declare module '@servicenow/glide/sn_app_api' {
      	class AppStoreAPI {
      		static canUpgradeAnyStoreApp(): boolean
      	}
      } 
      Este exemplo declara um módulo para acessar objetos definidos em inclusões de script usando o escopo da inclusão de script (x_1234_scope):
      declare module '@servicenow/glide/x_1234_scope' {
      	class MyLogItemClass {
      		myLogFunction()
      	}
      }
    3. Nos módulos JavaScript da sua aplicação, importe os módulos declarados.
      Este exemplo importa o módulo declarado para a 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!`)
      	}
      }
      Este exemplo importa o módulo declarado para o objeto MyLogItemClass.
      import { MyLogItemClass } from '@servicenow/glide/x_1234_scope'
      
      export const myLogFunction = function (status) {
      	const myLogItem = new MyLogItemClass()
      	myLogItem.myLogFunction(status)
      }
      Nota:
      Os módulos podem acessar somente objetos programáveis globais ou objetos programáveis no mesmo escopo da aplicação.