-
Notifications
You must be signed in to change notification settings - Fork 13.2k
Closed
Labels
DuplicateAn existing issue was already createdAn existing issue was already created
Description
#Proposal
Current emitted decorator metadata, only contains minimal typing information. My suggestion is to provide detailed information. Such as, nested type (generic type).
Example
1. resolve nested typing.
class A {
@Foo
propA: Map<string, Promise<number>>;
@Bar
propA: Map<string, Map<List<number>, boolean>>;
@Baz
methodA(): Map<Promise<number>, string>;
}
both @Foo's deisng:type and @Foo's design:returntype and each design:paramtypes should be the same.
resulting metadata:
@Foo: [Map, [string, [Promise, [number] ] ] ];
@Bar: [Map, [string, [Map, [ [List, [number] ] , boolean] ] ];
@Baz: [Map, [ [Promise, [number] ] , string] ];
logic:
for any generic type.
Type<...Arguments> -> [Type, [...Arguments]], recursively.
2. Retrieve parameter names
new metadata design:paramnames, in the same order of design:paramtypes.
3. ParamTypes and ParamNames for class decorators
@Foo
class A {
propA: string;
methodA(): number;
}
similar to deisng:paramtypes and design:paramnames of a method decorator. It retrieves paramter types and paramnames of each property and function even props were not assigned with a initial value. param type for a method should be Function in this case.
benjamingr, joesonw and MichalLytek
Metadata
Metadata
Assignees
Labels
DuplicateAn existing issue was already createdAn existing issue was already created