Búsqueda de sitios web

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.

Artículos relacionados