有没有更简洁的方式可以在TypeScript中表示此JSON对象?

时间:2020-06-24 16:36:17

标签: javascript json typescript interface

我有一个从JSON对象生成的接口:

export interface ValidationMsg {
  stringMinCharsValidation: string;
  stringMaxCharsValidation: string;
  stringMaxCharsForValidation: string;
  stringMaxCharsValidationWithKey: string;
  stringMinCharsValidationWithKey: string;
  stringThreeChars: string;
  moreThanThreeChars: string;
  coverMoreThan5: string;
  coverLessThan100: string;
  coverLessThan45: string;
  firstNameThree: string;
  firstNameWrongFormat: string;
  firstNameNoSpace: string;
  lastNameWrongFormat: string;
  lastNameNoSpace: string;
  numberLessThanLowerBound: string;
  numberMoreThanUpperBound: string;
  numberLessThanLowerBoundKgs: string;
  numberMoreThanUpperBoundKgs: string;
  numberLessThanLowerBoundMtrs: string;
  numberMoreThanUpperBoundMtrs: string;
  notNull: string;
  yearNot4: string;
  onlyNumbers: string;
  htmlTagsNotAllowed: string;
  validDate: string;
  validDateFormat: string;
  pastDate: string;
  futureDate: string;
  birthdayMax: string;
  birthdayMin: string;
  validPhoneNumber: string;
  validEmail: string;
  emailMaximumLength: string;
  notUkResident: string;
  pleaseSelect: string;
  validPostCode: string;
  validSortCode: string;
  validAuthorisation: string;
  validAccountNumber: string;
  noNumbers: string;
  invalidBankDetails: string;
  unknownSortCode: string;
  invalidAccountNumber: string;
  notEmpty: string;
  otherTitleNotNull: string;
  notEqualUnknown: string;
  invalidPassword: string;
  noValue: string;
  passwordsDontMatch: string;
  postcodeIsNotGuernseyOrChannelIslands: string;
  pleaseConfirm: string;
  pleaseCheckOCIS: string;
  mandatoryAddressFields: MandatoryAddressFields;
  firmNameThree: string;
  firmNameWrongFormat: string;
  firmNameNoSpace: string;
  firmReferenceWrongFormat: string;
  firmReferenceNoSpace: string;
  wrongFormat: string;
  noSpace: string;
  noSpaceStart: string;
  groupNameWrongFormat: string;
  groupNameNoSpace: string;
  groupReferenceWrongFormat: string;
  groupReferenceNoSpace: string;
  isNotNull: string;
  isValidNumber: string;
  isGreaterThanLowerBound: string;
  isLessThanUpperBound: string;
}
export interface MandatoryAddressFields {
  AUS: string;
  GBR: string;
  DEFAULT: string;
}

我最初使用Rcord<string, string>将其表示为接口,但由于MandatoryAddressFields而无法正常工作。

是否有一种更简洁的表示方式?

1 个答案:

答案 0 :(得分:2)

一个不太严格的方法可能是这样:

interface ValidationMsg {
    mandatoryAddressFields: MandatoryAddressFields,
    [key: string]: any
}

interface MandatoryAddressFields {
  AUS: string;
  GBR: string;
  DEFAULT: string;
}