Closed
Description
Hi guys,
I updated my project to latest typescript and eslint-plugin (2.7.0) version to use the new optional chaining operator and I encounter a problem when enforcing the CamelCase rule. Below a I am posting an example:
interface IData {
snake_id?: number;
user_snake?: {
first_name: string;
last_name: string;
};
userCamel?: {
firstName: string;
lastName: string;
snake_name: string;
};
}
const data: IData = {};
// RIGHT: No problem when accessing CamelCase fields
console.log('CamelFirstName:', data.userCamel?.firstName);
// RIGHT: No problem when accessing snake_case's fields methods
console.log('CamelFirstName:', data.snake_id?.toString());
// WRONG: Error when accessing snake_case fields after optional chaining operator
console.log('snake_first_name:', data.user_snake?.first_name);
console.log('snake_first_name:', data.userCamel?.snake_name);
Expected Result
Accessing snake_case fields of an object with the rule "@typescript-eslint/camelcase":2 should not throw an linting error.
Actual Result
Lint error when accessing an object's fields if they are in snake_case
Repro
{
"extends": [
"airbnb-typescript",
"plugin:@typescript-eslint/recommended",
"prettier",
"prettier/react",
"prettier/@typescript-eslint",
"prettier/babel",
"prettier/standard",
],
"rules": {
"@typescript-eslint/camelcase": 2,
}
}
Versions
package | version |
---|---|
@typescript-eslint/eslint-plugin |
2.7.0 |
@typescript-eslint/parser |
2.7.0 |
TypeScript |
3.7.2 |
ESLint |
6.6.0 |
node |
10.16.0 |
npm |
6.9.0 |