javascript - Variable de Typescript usada antes de ser asignada
Estoy viendo un error en mi proyecto de Typescript/ReactJS que dice La variable 'myVar' se usa antes de ser asignada. TS2454
Estoy usando la versión 4.2.3 de TS, y este error aparece en mi IDE así como cuando intento ejecutar el código. Sin embargo, funciona bien en jsFiddle (https://jsfiddle.net/d79L4ju8/) y no entiendo por qué se lanzaría el error, ya que parece que la variable está declarada y verificada:
interface testType {
id: string,
message: string,
}
let requestType = 'eventCreated';
let testVar = true;
let myVar: testType;
if (testVar) {
myVar = {
id: 'abc123',
message: 'message goes here',
}
}
switch (requestType) {
case 'eventCreated':
if (myVar !== undefined) { // error thrown here
console.log(myVar);
}
break;
case 'eventChanged':
if (myVar !== undefined) {
console.log(myVar);
}
break;
}
¿Qué está causando que esto falle?
Respuesta #1
Si no se asignara testVar, myVar se usaría sin estar inicializado. Podrías reescribir el código de la siguiente manera:
interface testType {
id: string,
message: string,
}
let requestType = 'eventCreated';
let testVar = true;
let myVar: testType | undefined = undefined;
if (testVar) {
myVar = {
id: 'abc123',
message: 'message goes here',
}
}
switch (requestType) {
case 'eventCreated':
if (myVar !== undefined) { // error thrown here
console.log(myVar);
}
break;
case 'eventChanged':
if (myVar !== undefined) {
console.log(myVar);
}
break;
}
Respuesta #2
Está arrojando un error porque la variable "myVar" está declarada en una condición; es posible que "myVar" no se defina en la condición, por lo que Typescript lanza un error.
