web-dev-qa-db-fra.com

Pris entre deux violations de syntaxe sans restriction

Voici mon code d'origine:

const buildTableContent = (settings) => {
  const entries = [];
  for (const key in settings) {
    for (const subkey in env[key]) {

settings est essentiellement un dictionnaire de dictionnaire

  {  
    'env': {'name': 'prod'}, 
    'sass: {'app-id': 'a123445', 'app-key': 'xxyyzz'}
  }

Il a déclenché l'erreur de guide de style AirBnb suivante:

Une erreur 35: 3 pour les boucles..in itère sur toute la chaîne du prototype, ce qui n'est pratiquement jamais ce que vous voulez. Utilisez Object. {Clés, valeurs, entrées} et parcourez le tableau résultant sans syntaxe non restreinte

Je change donc le code en

const buildTableContent = (settings) => {
  const entries = [];
  for (const key of Object.keys(settings)) {
    for (const subkey of Object.keys(env[key])) {

comme suggéré.

Maintenant, quand je lance lint, j'ai obtenu ceci:

Les itérateurs/générateurs d'erreur 35: 3 nécessitent un régénérateur exécuté, ce qui est trop lourd pour que ce guide le permette. Séparément, les boucles doivent être évitées au profit d'itérations de tableau sans syntaxe non restreinte

Donc, il me semble que dans tous les cas, ils violent un style de charpie.

Comment puis-je résoudre ce problème?

13
Anthony Kong

Vous voudriez utiliser

Object.keys(settings).forEach(key => {
  Object.keys(env[key]).forEach(subkey => {

ou potentiellement Object.entries ou Object.values selon que vous voulez réellement les clés.

12
loganfsmyth