aboutsummaryrefslogtreecommitdiff
path: root/src/fields/BasicField.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/fields/BasicField.ts')
-rw-r--r--src/fields/BasicField.ts38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/fields/BasicField.ts b/src/fields/BasicField.ts
new file mode 100644
index 000000000..437024d07
--- /dev/null
+++ b/src/fields/BasicField.ts
@@ -0,0 +1,38 @@
+import { Field } from "./Field"
+import { observable, computed, action } from "mobx";
+
+export abstract class BasicField<T> extends Field {
+ constructor(data: T) {
+ super();
+
+ this.data = data;
+ }
+
+ @observable
+ private data:T;
+
+ @computed
+ get Data(): T {
+ return this.data;
+ }
+
+ set Data(value: T) {
+ if(this.data === value) {
+ return;
+ }
+ this.data = value;
+ }
+
+ @action
+ TrySetValue(value: any): boolean {
+ if (typeof value == typeof this.data) {
+ this.Data = value;
+ return true;
+ }
+ return false;
+ }
+
+ GetValue(): any {
+ return this.Data;
+ }
+}