Я относительно новичок в Typescript (и Javascript) и возился с классами.Я пытаюсь найти краткий способ создания объекта, который будет заполнен похожими записями, но при этом сохранит безопасность типов.
Вот код, который я написал:
let testFixture: Fixture = (() => {
let stringPrefix = 'TEST BaseEventDTO';
let result = {}; // The object to become a "Fixture".
['id', 'name', 'location'].forEach(element => {
result[`${element}`] = generateId(`${stringPrefix} ${element}`);
});
return result;
})();
В этом коде приборы имеют обязательные строковые поля id
, name
и location
.Кроме того, я хочу, чтобы все они имели stringPrefix перед именем поля, как показано в foreach.Я пытаюсь создать объект, не набирая один и тот же материал более одного раза, например, префикс или имена полей.Результатом, однако, является предупреждение от VSCode, что Type {} is missing the following properties of Type 'Fixture': 'id', 'name', and 'location'
.
Есть ли обычный способ (или просто рабочий путь), чтобы пойти по этому поводу?
Также, чтобы уточнить, я пишу это с помощью анонимной функции, чтобы сделать переменную stringPrefix
локальной.
РЕДАКТИРОВАТЬ: изменение return result;
на return <Fixture>result;
исправило ошибку.Но я оставляю этот случай, когда мое решение является ловушкой, или, если есть другой, лучший способ сделать это.
И для дальнейшего разъяснения, результат должен, в конце концов, быть эквивалентным этому:
let result = {
id: generateID(`${stringPrefix} id`),
name: generateID(`${stringPrefix} name`),
location: generateID(`${stringPrefix} location`)
}
, который затем будет приведен к типу 'Fixture'.