typescript - Objeto pode ser 'undefined'.ts(2532) quando adiciono dados ao objeto
Eu criei o objeto e a propriedade formTemplateValues. Eu tenho essa propriedade com garantia de 100%, mas vejo o erro: "O objeto pode ser 'undefined'". Não pode ser indefinido, porque eu o criei. Por que estou tendo esse erro e como posso corrigi-lo?
Parque infantil
interface Test {
formTemplateValues?: {
tabData?: {
timeInterval?: string;
};
}[];
}
let a: Test = {
formTemplateValues: []
};
a.formTemplateValues[0] = { // Object is possibly 'undefined'.ts(2532)
tabData: {
timeInterval: "dddd"
}
}
Resposta #1
Typescript está dependendo da definição de tipo que você deu para o tipo, que diz que o campo pode estar ausente:
interface Test {
formTemplateValues?: {
// ---------------^
tabData?: {
timeInterval?: string;
};
}[];
}
Quando você então tem a atribuição com o tipo anotado Test, o tipo opcional é mantido, mesmo que você tenha atribuído um valor.
const a: Test = {
// This is still considered possibly undefined
formTemplateValues: []
};
Se o campo sempre estiver presente, como você disse, você poderia remover o opcional da definição do tipo.
Alternativamente, você pode verificar o campo antes de adicionar, ou elevar o campo interno para um tipo separado e deixar o tipo da variável inferido:
interface TemplateValue {
tabData?: {
timeInterval?: string;
};
};
const a = {
formTemplateValues: [] as TemplateValue[]
};
