aboutsummaryrefslogtreecommitdiff
path: root/Timeline/ClientApp/src/app/utilities
diff options
context:
space:
mode:
Diffstat (limited to 'Timeline/ClientApp/src/app/utilities')
-rw-r--r--Timeline/ClientApp/src/app/utilities/debounce-click.directive.spec.ts9
-rw-r--r--Timeline/ClientApp/src/app/utilities/debounce-click.directive.ts6
-rw-r--r--Timeline/ClientApp/src/app/utilities/language-untilities.ts12
3 files changed, 20 insertions, 7 deletions
diff --git a/Timeline/ClientApp/src/app/utilities/debounce-click.directive.spec.ts b/Timeline/ClientApp/src/app/utilities/debounce-click.directive.spec.ts
index 75710d0c..89f66b99 100644
--- a/Timeline/ClientApp/src/app/utilities/debounce-click.directive.spec.ts
+++ b/Timeline/ClientApp/src/app/utilities/debounce-click.directive.spec.ts
@@ -13,8 +13,8 @@ interface TestComponent {
template: '<button (appDebounceClick)="clickHandler()"></button>'
})
class DefaultDebounceTimeTestComponent {
- @ViewChild(DebounceClickDirective)
- directive: DebounceClickDirective;
+
+ @ViewChild(DebounceClickDirective) directive!: DebounceClickDirective;
clickHandler: () => void = () => { };
}
@@ -24,10 +24,9 @@ class DefaultDebounceTimeTestComponent {
template: '<button (appDebounceClick)="clickHandler()" [appDebounceClickTime]="debounceTime"></button>'
})
class CustomDebounceTimeTestComponent {
- debounceTime: number;
+ debounceTime: number | undefined;
- @ViewChild(DebounceClickDirective)
- directive: DebounceClickDirective;
+ @ViewChild(DebounceClickDirective) directive!: DebounceClickDirective;
clickHandler: () => void = () => { };
}
diff --git a/Timeline/ClientApp/src/app/utilities/debounce-click.directive.ts b/Timeline/ClientApp/src/app/utilities/debounce-click.directive.ts
index feb0404e..1d01b671 100644
--- a/Timeline/ClientApp/src/app/utilities/debounce-click.directive.ts
+++ b/Timeline/ClientApp/src/app/utilities/debounce-click.directive.ts
@@ -7,7 +7,7 @@ import { debounceTime } from 'rxjs/operators';
})
export class DebounceClickDirective implements OnInit, OnDestroy {
- private subscription: Subscription;
+ private subscription: Subscription | undefined;
@Output('appDebounceClick') clickEvent = new EventEmitter<any>();
@@ -34,6 +34,8 @@ export class DebounceClickDirective implements OnInit, OnDestroy {
}
ngOnDestroy() {
- this.subscription.unsubscribe();
+ if (this.subscription) {
+ this.subscription.unsubscribe();
+ }
}
}
diff --git a/Timeline/ClientApp/src/app/utilities/language-untilities.ts b/Timeline/ClientApp/src/app/utilities/language-untilities.ts
new file mode 100644
index 00000000..be9df2dc
--- /dev/null
+++ b/Timeline/ClientApp/src/app/utilities/language-untilities.ts
@@ -0,0 +1,12 @@
+export function nullIfUndefined<T>(value: T | undefined): T | null {
+ return value === undefined ? null : value;
+}
+
+export function throwIfNullOrUndefined<T>(value: T | null | undefined,
+ lazyMessage: () => string = () => 'Value mustn\'t be falsy'): T | never {
+ if (value === null || value === undefined) {
+ throw new Error(lazyMessage());
+ } else {
+ return value;
+ }
+}