forked from dsherret/ts-morph
-
Notifications
You must be signed in to change notification settings - Fork 0
/
PropertyDeclaration.ts
48 lines (43 loc) · 2.03 KB
/
PropertyDeclaration.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import * as errors from "../../../errors";
import { PropertyDeclarationSpecificStructure, PropertyDeclarationStructure, StructureKind } from "../../../structures";
import { SyntaxKind, ts } from "../../../typescript";
import { ChildOrderableNode, DecoratableNode, ExclamationTokenableNode, InitializerExpressionableNode, JSDocableNode, ModifierableNode,
PropertyNamedNode, QuestionTokenableNode, ReadonlyableNode, ScopedNode, StaticableNode, TypedNode } from "../base";
import { callBaseSet } from "../callBaseSet";
import { callBaseGetStructure } from "../callBaseGetStructure";
import { AbstractableNode } from "./base";
import { ClassElement } from "./ClassElement";
export const PropertyDeclarationBase = ChildOrderableNode(DecoratableNode(AbstractableNode(ScopedNode(StaticableNode(JSDocableNode(
ReadonlyableNode(ExclamationTokenableNode(QuestionTokenableNode(InitializerExpressionableNode(TypedNode(PropertyNamedNode(ModifierableNode(ClassElement)))))))
))))));
export class PropertyDeclaration extends PropertyDeclarationBase<ts.PropertyDeclaration> {
/**
* Sets the node from a structure.
* @param structure - Structure to set the node with.
*/
set(structure: Partial<PropertyDeclarationStructure>) {
callBaseSet(PropertyDeclarationBase.prototype, this, structure);
return this;
}
/**
* Removes the property.
*/
remove() {
const parent = this.getParentOrThrow();
switch (parent.getKind()) {
case SyntaxKind.ClassDeclaration:
super.remove();
break;
default:
throw new errors.NotImplementedError(`Not implemented parent syntax kind: ${parent.getKindName()}`);
}
}
/**
* Gets the structure equivalent to this node.
*/
getStructure(): PropertyDeclarationStructure {
return callBaseGetStructure<PropertyDeclarationSpecificStructure>(PropertyDeclarationBase.prototype, this, {
kind: StructureKind.Property
}) as any as PropertyDeclarationStructure;
}
}