recherche

Maison  >  Questions et réponses  >  le corps du texte

Dans mon code "for..in...", parfois les erreurs de type TypeScript n'apparaissent pas

Pas de problème lors des tests, mais parfois une erreur "Impossible de lire la propriété de null (lire 'pseudo')" . J'ai posté une partie du code.

let seat = [
  null,
  null,
  { nickname: "user1", uuid: "d94e81f3-df66-45f6-a593-c7ee6ccfe261" },
  null,
  { nickname: "user2", uuid: "d94e81f3-df66-45f6-a593-c7ee6ccfe261" },
  null,
  null,
  null,
  null,
  null,
  null,
];
for (const i in seat) {
  if (seat[i].nickname === "user1") {
    seat[i] = null;
    break;
  }
}

console.log(seat);

Je ne sais pas pourquoi parfois il n'y a pas de problème, mais tout à coup il y a une erreur.

for (const i in seat) {
  if (seat[i] !== null && seat[i].nickname === "user1") {
    seat[i] = null;
    break;
  }
}

J'ai temporairement résolu le problème en modifiant le code dans le formulaire ci-dessus. Je suis curieux de savoir pourquoi...

P粉166779363P粉166779363493 Il y a quelques jours550

répondre à tous(1)je répondrai

  • P粉903969231

    P粉9039692312023-09-10 00:29:02

    C'est parce que certains éléments du tableau sont nuls, vous devez donc ajouter une condition à vérifier, comme vous l'avez fait seat[i] !== null,但你也可以使用可选链操作符?..

    Référence :https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Optional_chaining

    for (const i in seat) {
      if (seat[I]?.nickname === "user1") {
        seat[i] = null;
        break;
      }
    }

    Exemple : Si vos données ressemblent à celles ci-dessous, vous n'avez pas besoin d'ajouter des opérateurs de chaînage conditionnels ou facultatifs.

    let seat = [
      { nickname: "user1", uuid: "d94e81f3-df66-45f6-a593-c7ee6ccfe261" },
      { nickname: "user4", uuid: "d94e81f3-df66-45f6-a593-c7ee6ccfe263" },
      { nickname: "user5", uuid: "d94e81f3-df66-45f6-a593-c7ee6ccfe264" },
      { nickname: "user3", uuid: "d94e81f3-df66-45f6-a593-c7ee6ccfe265" },
      { nickname: "user1", uuid: "d94e81f3-df66-45f6-a593-c7ee6ccfe267" },
      { nickname: "user2", uuid: "d94e81f3-df66-45f6-a593-c7ee6ccfe269" },
    ];
    for (const i in seat) {
      if (seat[i].nickname === "user1") {
        seat[i] = null;
        break;
      }
    }

    répondre
    0
  • Annulerrépondre