{
"title": {
"de-DE": "German",
"fr-FR": "French",
"en-CA": "English"
},
"image": "/tile.jpg",
"url": "/url/to/version"
}
У меня есть этот JSON, который я запрашиваю, и моя модель выглядит так:
export class ThisIsMyModel {
title: string;
image: string;
url: string;
}
Как правильно создать подполе для локалей, примерно так:
export class ThisIsMyModel {
title: string
[
de-DE: string;
fr-FR: string;
en-CA: string;
];
image: string;
url: string;
}
2 ответа
Если набор языков ограничен перечисленными вами, вы можете использовать это определение. Также, если вы просто собираетесь преобразовать объект JSON в тип модели, вам следует использовать интерфейс, а не класс:
export interface ThisIsMyModel {
title: {
'de-DE': string;
'fr-FR': string;
'en-CA': string;
};
image: string;
url: string;
}
Если языки неизвестны, вы можете определить объект с помощью индексатора строк:
export interface ThisIsMyModel {
title: {
[name: string]: string
};
image: string;
url: string;
}
Приведенное вами определение TS не будет работать с вашими данными. title
может иметь тип { [key: string]: string }
, если хотите. Если бы он мог также быть простой строкой, вы могли бы попробовать { [key: string]: string} | string
и разобраться с тем или иным случаем во время выполнения.
Похожие вопросы
Новые вопросы
typescript
TypeScript - это типизированный надмножество JavaScript, которое компилируется в простой JavaScript. Он добавляет в JavaScript дополнительные типы, классы, интерфейсы и модули. Этот тег предназначен для вопросов, относящихся к TypeScript. Он не используется для ответов на общие вопросы по JavaScript.