Деструктуризация объекта Typescript отлавливается правилом ESLint no-unused-vars - PullRequest
2 голосов
/ 10 июля 2020

У меня есть объект в Typescript, который я деструктурирую, чтобы извлечь частичный объект. Однако мой линтер не проходит проверку:

async someFunction(username: string): Promise<UserDTO> {
    const userEntity = await getUserByUsernameAsync(username);

    if (userEntity ) {
        const { password, ...result } = userEntity ;
        return result;
    }

    return null;
}

Как видите, приведенный выше код захватывает объект и удаляет некоторые части объекта, которые мы не хотим возвращать, и возвращает остальную часть.

Однако линтер выдает предупреждение:

warning  'password' is assigned a value but never used      @typescript-eslint/no-unused-vars

Деструктуризация объекта присваивает passport значению и result другому значению объекта, а passport - тот, который не используется. Как исправить эту проблему, чтобы передать линтер?

Ответы [ 2 ]

2 голосов
/ 10 июля 2020

Вы можете отключить эту проверку для остальных братьев и сестер, добавив "@typescript-eslint/no-unused-vars": ["error", { "ignoreRestSiblings": true }] в свой список правил в eslintrc.js.

Пример:

module.exports = {
  root: true,
  parser: "@typescript-eslint/parser",
  plugins: [
    "@typescript-eslint",
  ],
  extends: [
    "plugin:@typescript-eslint/eslint-recommended",
    "plugin:@typescript-eslint/recommended"
  ],
  rules: {
    "@typescript-eslint/no-unused-vars": ["error", { "ignoreRestSiblings": true }]
  },
  settings: {
    react: {
      version: "detect"
    }
  }
};

Вы также можете отключить линтинг правило для этой строки, добавляя это к строке над ней:

// eslint-disable-next-line @typescript-eslint/no-unused-vars
1 голос
/ 10 июля 2020

Вы можете либо удалить настройку линтера с помощью ignoreRestSiblings, либо передать весь объект, а затем удалить свойство.

async someFunction(username: string): Promise<UserDTO> {
    const userEntity = await getUserByUsernameAsync(username);

    if (userEntity ) {
        const {...result} = userEntity;
        delete result.password;
        return result
    }
    
    return null;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...