Dynamics 365 не удается ссылаться на функции javascript из экспортированных классов машинописи

#javascript #typescript #export #dynamics-365

Вопрос:

Я сталкиваюсь с проблемой при попытке ссылаться на функции javascript из форм Dynamics 365, когда файлы javascript были скомпилированы из typescript, экспортирующего класс, в котором находится функция (что я делаю для запуска модульных тестов против них). Та же проблема не возникает, если вместо этого я помещаю функцию в пространство имен, но возникает, если я затем попытаюсь экспортировать пространство имен вместо/также как функцию (опять же, чтобы иметь возможность ссылаться в модульных тестах.

В каждом из приведенных ниже случаев внутри динамики в событии onchange я ссылаюсь на функцию, вызываемую по ссылке.ОпенДиалогОнХолд.

Поэтому при использовании:

 export class Referral {
 static OpenDialogOnHold(context: Xrm.Events.EventContext) {
    try {
      Xrm.Navigation.navigateTo(
      ...
    );
    } catch (exception) {
      console.error(exception);
    }
  }
}
 

или

 export namespace Referral {
 export function OpenDialogOnHold(context: Xrm.Events.EventContext) {
    try {
      Xrm.Navigation.navigateTo(
      ...
    );
    } catch (exception) {
      console.error(exception);
    }
  }
}
 

затем он выходит из строя внутри Dynamics, говоря, что не может найти ссылку на имена функций.Открытый плацдарм

но если я использую:

 namespace Referral {
 export function OpenDialogOnHold(context: Xrm.Events.EventContext) {
    try {
      Xrm.Navigation.navigateTo(
      ...
    );
    } catch (exception) {
      console.error(exception);
    }
  }
}
 

тогда это работает нормально, однако затем я пытаюсь ссылаться на функцию в модульных тестах, поскольку она жалуется, что файл не является модулем.

Any assistance gratefully appreciated!

ts.config settings are:

 {
  "compileOnSave": true,
  "compilerOptions": {
    "target": "ES5",
    "module": "ES2015",
    "rootDir": "ts",
    "moduleResolution": "node",
    "sourceMap": true,
    "outDir": "Webresources/ih_/js",
    "esModuleInterop": true,
    "forceConsistentCasingInFileNames": true,
    "strict": true,
    "skipLibCheck": true
  },
  "exclude": ["tests/**/*"]
}