diff options
Diffstat (limited to 'Timeline/ClientApp/src/app/utilities')
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; + } +} |