#javascript #json #typescript #types
Вопрос:
Итак, у меня есть этот JSON:
{
"elements": [
{
"type": "abstract"
},
{
"type": "machine"
},
{
"type": "user"
}
]
}
И вот мои типы:
export type StateStructure = {
type: 'user' | 'machine' | 'abstract';
};
Но когда я пытаюсь импортировать JSON в качестве данных и установить его в этот тип, вот так:
export const constructStatesTreeStructure = (
data: StatesRootData = states,
) => ...
Я получаю эту ошибку:
Types of property 'type' are incompatible.
Type 'string' is not assignable to type '"abstract" | "user" | "machine"'.
Что имеет смысл. TS не знает, что все значения в type
поле JSON на самом деле являются одним из этих 3. Но как я могу «привести» его или «сказать» TS, что это единственные 3 значения, возможные в этом JSON?
Я пытался сделать что-то вроде
type: string amp; ('user' | 'machine' | 'abstract')
но не повезло.
Ответ №1:
Не бери в голову, это все решило:
export const constructStatesTreeStructure = (
data: StatesRootData = states as StatesRootData,
) => ...