CRM 2011 și Typescript: Cum să obții secțiuni într-un tab
Implementăm logica pe partea de client folosind TypeScript într-unul dintre proiectele noastre CRM 2011. Până acum, totul bine.
Totuși, ceva pare în neregulă în fișierul Xrm2011.1_0.d.ts în ceea ce privește secțiunile. Tab-urile și secțiunile sunt definite după cum urmează:
module Xrm {
export module Page {
...
export module ui {
...
export module tabs {
...
export function get(tabName: string): Tab;
...
export module sections {
...
export function get(sectionName: string): Section;
...
}
}
}
}
}
Acest lucru te obligă să implementezi TypeScript astfel:
var section = <Xrm.Page.Section>Xrm.Page.ui.tabs.sections.get(sectionName);
Care se compilează în:
Xrm.Page.ui.tabs.sections.get(sectionName);
Totuși, sintaxa corectă în JavaScript ar trebui să fie:
Xrm.Page.ui.tabs.get(tabName).sections.get(sectionName);
Cineva a experimentat asta? Îmi scapă ceva aici?
Mulțumesc anticipat.
Răspuns #1
Ultima sintaxă nu va funcționa. Tab nu este o clasă, așa că tabs.get returnează o clasă Tb, dar clasa Tab nu are o proprietate .sections. De asemenea, nu ar trebui să fie nevoie să faci conversia de tip.
Ps.... Încearcă să declari modulele tale cu notație punctată „export Xrm.Page.ui.tabs”. Va face codul tău mai ușor de citit.
De asemenea, ce te-a determinat să faci unele clase cu majusculă și altele nu?
Răspunsul #2
var section = <Xrm.Page.Section>Xrm.Page.ui.tabs.get(tabName).sections.get(sectionName);
va fi compilat în modul specificat în partea „sintaxa corectă JavaScript ar trebui să fie”.
