tslint-lines-between-class-members icon indicating copy to clipboard operation
tslint-lines-between-class-members copied to clipboard

Linting fails for constructor of generic type after prettier multi-line format

Open seangwright opened this issue 6 years ago • 3 comments

Prettier formats some generic type definitions by placing the generic constraints on multiple lines.

This causes tslint-lines-between-class-members to fail linting.

The error is must have 1 new line(s) between class methods, see docs for how to configure which appears on the constructor() { line.

I believe this is due to how you are checking the previous line.

Passes

export class PermissionsStore extends EntityStore<PermissionsState, Permission> {
  constructor() {
    super();
  }
}

Fails

export class PermissionsStore extends EntityStore<
  PermissionsState,
  Permission
> {
  constructor() {
    super();
  }
}

I also ran into this situation where Prettier puts the implements keyword on its own line which causes this lint rule to fail at the line constructor() { }.

interface SomeInterface {
    name: string;
}

export class SomeClass
  implements SomeInterface {
  constructor() { }

  name = 'test';
}

seangwright avatar Jan 21 '19 16:01 seangwright

This should be fixed in 1.3.5, let me know if you are still getting any problems

chinchiheather avatar Jul 20 '19 05:07 chinchiheather

Awesome! Thanks so much!

seangwright avatar Jul 20 '19 16:07 seangwright

I worked alongside @seangwright on a project we really felt the pain of this issue on. I've updated our packages and can confirm this has been resolved. Thank you, @chinchiheather much appreciated!

eyev avatar Jul 24 '19 15:07 eyev