1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const index_1 = require("../types/index");
|
4 | const abstract_1 = require("./abstract");
|
5 | const lodash_1 = require("lodash");
|
6 | class SignatureReflection extends abstract_1.Reflection {
|
7 | getParameterTypes() {
|
8 | if (!this.parameters) {
|
9 | return [];
|
10 | }
|
11 | function notUndefined(t) {
|
12 | return !!t;
|
13 | }
|
14 | return this.parameters.map(parameter => parameter.type).filter(notUndefined);
|
15 | }
|
16 | traverse(callback) {
|
17 | if (this.type instanceof index_1.ReflectionType) {
|
18 | if (callback(this.type.declaration, abstract_1.TraverseProperty.TypeLiteral) === false) {
|
19 | return;
|
20 | }
|
21 | }
|
22 | for (const parameter of lodash_1.toArray(this.typeParameters)) {
|
23 | if (callback(parameter, abstract_1.TraverseProperty.TypeParameter) === false) {
|
24 | return;
|
25 | }
|
26 | }
|
27 | for (const parameter of lodash_1.toArray(this.parameters)) {
|
28 | if (callback(parameter, abstract_1.TraverseProperty.Parameters) === false) {
|
29 | return;
|
30 | }
|
31 | }
|
32 | super.traverse(callback);
|
33 | }
|
34 | toObject() {
|
35 | const result = super.toObject();
|
36 | if (this.type) {
|
37 | result.type = this.type.toObject();
|
38 | }
|
39 | if (this.overwrites) {
|
40 | result.overwrites = this.overwrites.toObject();
|
41 | }
|
42 | if (this.inheritedFrom) {
|
43 | result.inheritedFrom = this.inheritedFrom.toObject();
|
44 | }
|
45 | if (this.implementationOf) {
|
46 | result.implementationOf = this.implementationOf.toObject();
|
47 | }
|
48 | return result;
|
49 | }
|
50 | toString() {
|
51 | let result = super.toString();
|
52 | if (this.typeParameters) {
|
53 | const parameters = [];
|
54 | this.typeParameters.forEach((parameter) => parameters.push(parameter.name));
|
55 | result += '<' + parameters.join(', ') + '>';
|
56 | }
|
57 | if (this.type) {
|
58 | result += ':' + this.type.toString();
|
59 | }
|
60 | return result;
|
61 | }
|
62 | }
|
63 | exports.SignatureReflection = SignatureReflection;
|
64 |
|
\ | No newline at end of file |