Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/markalfred/eslint-plugin-no-constructor-bind
Prefer class arrow functions to binding in the constructor
https://github.com/markalfred/eslint-plugin-no-constructor-bind
Last synced: 3 months ago
JSON representation
Prefer class arrow functions to binding in the constructor
- Host: GitHub
- URL: https://github.com/markalfred/eslint-plugin-no-constructor-bind
- Owner: markalfred
- Created: 2018-04-26T02:38:10.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-03-04T02:39:04.000Z (over 1 year ago)
- Last Synced: 2024-07-05T14:17:20.340Z (4 months ago)
- Language: JavaScript
- Homepage:
- Size: 285 KB
- Stars: 12
- Watchers: 2
- Forks: 1
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-eslint - no-constructor-bind - Encourages use of class properties by reporting use of `this` with `bind` or setting state in constructors. (Plugins / Practices and Specific ES Features)
README
# eslint-plugin-no-constructor-bind
[![Build Status](https://travis-ci.org/markalfred/eslint-plugin-no-constructor-bind.svg?branch=master)](https://travis-ci.org/markalfred/eslint-plugin-no-constructor-bind)
[![Coverage Status](https://coveralls.io/repos/github/markalfred/eslint-plugin-no-constructor-bind/badge.svg?branch=master)](https://coveralls.io/github/markalfred/eslint-plugin-no-constructor-bind?branch=master)
[![Known Vulnerabilities](https://snyk.io/test/github/markalfred/eslint-plugin-no-constructor-bind/badge.svg?targetFile=package.json)](https://snyk.io/test/github/markalfred/eslint-plugin-no-constructor-bind?targetFile=package.json)Prefer class properties to equivalent setup steps taken in a class' constructor method.
```js
// Bad:
class User {
constructor() {
this.greet = this.greet.bind(this)
}
greet() { return 'Hello' }
}// Good:
class User {
greet = () => 'hello'
}
```Use `no-constructor-bind` to eliminate bound functions in your constructor.
Use `no-constructor-state` to eliminate initial state setting in your constructor.
Doing this, most likely you'll be able to use ESLint's builtin `no-useless-constructor` to remove many constructors in your app.## Installation
You'll first need to install [ESLint](http://eslint.org):
```
$ npm i eslint --save-dev
```Next, install `eslint-plugin-no-constructor-bind`:
```
$ npm install eslint-plugin-no-constructor-bind --save-dev
```**Note:** If you installed ESLint globally (using the `-g` flag) then you must also install `eslint-plugin-no-constructor-bind` globally.
## Usage
Add `no-constructor-bind` to the plugins section of your `.eslintrc` configuration file. You can omit the `eslint-plugin-` prefix:
```json
{
"plugins": ["no-constructor-bind"]
}
```Then configure the rules you want to use under the rules section.
```json
{
"rules": {
"no-constructor-bind/no-constructor-bind": "error",
"no-constructor-bind/no-constructor-state": "error"
}
}
```## Supported Rules
* no-constructor-bind (:wrench:) — Use class arrow functions instead of binding in the constructor
* no-constructor-state (:wrench:) — Use class property instead of setting initial state in the constructor