Ignore abstract methods when decorating class (#11345)

* Ignore abstract methods when decorating class

* Address Nico's feedback

* Add input/output test

* Update test output to account for _nonIterableRest changes
This commit is contained in:
Oliver Dunk
2020-03-28 23:17:29 +00:00
committed by GitHub
parent 6a00cbe0ab
commit 71e7a7b1e0
5 changed files with 133 additions and 1 deletions

View File

@@ -0,0 +1,27 @@
function decorate(value: boolean) {
return function(
target: any,
propertyKey: string,
descriptor: PropertyDescriptor
) {};
}
abstract class A {
@decorate(false)
private decoratedMember: boolean;
abstract myMethod(): number;
}
class B extends A {
constructor() {
super();
}
myMethod(): number {
return 5;
}
}
const b = new B();
expect(b.myMethod()).toBe(5);

View File

@@ -0,0 +1,26 @@
function decorate(value: boolean) {
return function(
target: any,
propertyKey: string,
descriptor: PropertyDescriptor
) {};
}
abstract class A {
@decorate(false)
private decoratedMember: boolean;
abstract myMethod(): void;
}
class B extends A {
constructor() {
super();
}
myMethod(): void {
}
}
const b = new B();

View File

@@ -0,0 +1,9 @@
{
"presets": [
["typescript"]
],
"plugins": [
["proposal-decorators", { "decoratorsBeforeExport": true }],
["proposal-class-properties"]
]
}