Платформа A2v10 довідкова система
EN


Перевірка типів

В системі передбачено можливість динамічної (під час виконання) перевірки відповідності типів. Перевіряеться відповідність типів і властивостей, отриманих з моделі та описаних в файлі визначення *.d.ts. Крім того, при рендерингу xaml-видів перевіряється відповідність прив'язок зазначеним типам.

Таким чином, якщо перевірку типів ввімкнено, то система гарантує, що отримана з бази даних модель відповідає опису, і що у виді використовуються тільки існуючі прив`язки. За відповідність даних і коду шаблонз відповідає компілятор TypeScript.

Цей механізм буде працювати тільки в тому випадку, коли шаблони пишуться мовою TypeScript.

Приклад

Нехай, наприклад, ми використовуємо перевірку типів при редагуванні властивостей контрагента. Ця частина програми розташована в папці /catalog/agent.

Файли в папке:

Файл Опис
model.json файл опису моделі
model.d.ts файл визначення типів
edit.template.ts файл шаблону (TypeScript)
edit.dialog.xaml файл виду

Файл model.json


Вміст моделі

Збережена процедура a2v10.[Agent.Load].


Процедура повертає один запис типу TAgent з полями Id, Name, Code.

Файл model.d.ts


Фрагмент файлу edit.template.ts


Як це працює

  • Модель завантажується з БД і будуються метадані.
  • В файлі model.json перевіряється наявність елементу checkTypes. Якщо його нема, нічого не виконується.
  • Якщо файл опису даних вказаний, то він завантажується і розбираються всі описані в ньому типі.
  • Перевіряється відповідність типів, описаних у файлі model.d.ts і типів, отриманих з моделі даних. Повинні співпадати імена типів і їх властивості. Імена властивостей, які починаються з символу "$" вважаються обчислюваними і не перевіряються в моделі даних. Вони знадобляться на наступному кроці. Якщо знайдені неспівпадіння - генерирується виключення.
  • Під час рендерингу виду перевіряються всі прив`язки. Про спробі прив'язатися до неіснуючої властивості, генерирується виключення.

Зверніть увагу! Динамічна перевірка типів буде працювати тільки в налагоджувальній конфигурації.
Властивість configuration в розділі appSettings файлу Web.config повинна бути встановлена в debug.