Портирование unicode включило приложение Delphi 2006 года к Delphi 2009

TS выдает ошибку, поскольку возвращаемое значение будет иметь тип IReportItemRegions | IReportItemFactionStatus.

Если его типа IReportItemFactionStatus, то нет regions в нем. Так что это должно выдать ошибку.

Когда вы добавляете эту проверку: reportData.type !== "REGIONS", вы говорите машинопись, что для случаев, когда вы получаете IReportItemFactionStatus, вы возвращаетесь раньше, и console.log(reportData.regions); становится недоступным кодом. Следовательно, нет ошибки.


Альтернативный способ:

enum ReportType {
  REGIONS = "REGIONS",
  FACTION_STATUS = "FACTION_STATUS"
}

export interface IReportItem {
  type: ReportType;
  regions?: [];
}

// No need for this now
//export type IReportItem = IReportItemRegions | IReportItemFactionStatus;

export type IReport = Array < IReportItem > ;

// ... code ...
// report has type IReport

const reportData: IReportItem | null = report.find((d) => {
  return d.type === ReportType.REGION;
});

if (!reportData) {
  return [];
}
console.log(reportData.regions); // Typescript error here
5
задан RRUZ 23 April 2011 в 00:44
поделиться

3 ответа

Нет, действительно нет. Но Вы не будете сожалеть, что работа к действительно Unicode включает Ваше приложение.

Средства управления TNT могут легко быть заменены регулярными средствами управления VCL. Можно сделать это симпатичное просто использование мастера от GExperts (http://www.gexperts.org), который заменяет один тип управления другим автоматически.

Затем можно изменить все объявления WideString на обычные строки. Строка является теперь псевдонимом для UnicodeString, и таким образом, все Ваши строки могут содержать данные Unicode очень хорошо.

BTW, автор средств управления TNT, Troy Wolbrink, теперь значительно предпочитают Delphi 2009 по его собственным средствам управления.

13
ответ дан 18 December 2019 в 14:53
поделиться

Основное преимущество Средств управления TNT состоит только в том, что Оно может работать программой Ansi в Windows 9x. Это не полный unicode. Если Вы хотите полную поддержку unicode везде (такую как Stringlist. LoadFromFile, Форма. OnKeyPress) хорошо переместить в Delphi 2009.

0
ответ дан 18 December 2019 в 14:53
поделиться

Я сделал то же самое в приложении, которое использовало различные XML-файлы в качестве входа. В моем случае я работал с UTF-8 (таким образом, мы могли использовать обычные строки) всюду по программе и только преобразованный в WideString в целях дисплея (средства управления TNT).

Я удалил преобразования назад и вперед между WideString и UTF-8 и заменил средства управления TNT регулярными средствами управления VCL вручную, так как была только горстка форм.

Преобразование заняло приблизительно час с тестированием. Код более прост, и программа заметно быстрее.

0
ответ дан 18 December 2019 в 14:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: