ESLint no-unused-vars规则捕获Typescript对象的解构

时间:2020-07-10 17:47:42

标签: javascript typescript eslint typescript-eslint

我在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 个答案:

答案 0 :(得分:3)

对于其余兄弟姐妹,您可以禁用此验证,将"@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 :(得分:1)

您可以查看使用ignoreRestSiblings删除linter设置,或者传递整个对象,然后删除属性。

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

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