Skip to content

Commit af6d7e8

Browse files
lazarljubenovicprofanis
authored andcommitted
refactor(forms): use a type guard to get rid of casts (angular#32541)
Use an explicit type guard when checking if a given object is of type AbstractControlOptions, instead of a simple function returning a boolean value. This allows us to remove manual type casting when using this function, relying instead on TypeScript to infer correct types. PR Close angular#32541
1 parent 0a91042 commit af6d7e8

File tree

1 file changed

+5
-12
lines changed

1 file changed

+5
-12
lines changed

packages/forms/src/model.ts

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -71,11 +71,7 @@ function _find(control: AbstractControl, path: Array<string|number>|string, deli
7171

7272
function coerceToValidator(validatorOrOpts?: ValidatorFn|ValidatorFn[]|AbstractControlOptions|
7373
null): ValidatorFn|null {
74-
const validator =
75-
(isOptionsObj(validatorOrOpts) ? (validatorOrOpts as AbstractControlOptions).validators :
76-
validatorOrOpts) as ValidatorFn |
77-
ValidatorFn[] | null;
78-
74+
const validator = isOptionsObj(validatorOrOpts) ? validatorOrOpts.validators : validatorOrOpts;
7975
return Array.isArray(validator) ? composeValidators(validator) : validator || null;
8076
}
8177

@@ -84,10 +80,7 @@ function coerceToAsyncValidator(
8480
validatorOrOpts?: ValidatorFn|ValidatorFn[]|AbstractControlOptions|null): AsyncValidatorFn|
8581
null {
8682
const origAsyncValidator =
87-
(isOptionsObj(validatorOrOpts) ? (validatorOrOpts as AbstractControlOptions).asyncValidators :
88-
asyncValidator) as AsyncValidatorFn |
89-
AsyncValidatorFn | null;
90-
83+
isOptionsObj(validatorOrOpts) ? validatorOrOpts.asyncValidators : asyncValidator;
9184
return Array.isArray(origAsyncValidator) ? composeAsyncValidators(origAsyncValidator) :
9285
origAsyncValidator || null;
9386
}
@@ -119,7 +112,7 @@ export interface AbstractControlOptions {
119112

120113

121114
function isOptionsObj(validatorOrOpts?: ValidatorFn|ValidatorFn[]|AbstractControlOptions|
122-
null): boolean {
115+
null): validatorOrOpts is AbstractControlOptions {
123116
return validatorOrOpts != null && !Array.isArray(validatorOrOpts) &&
124117
typeof validatorOrOpts === 'object';
125118
}
@@ -914,8 +907,8 @@ export abstract class AbstractControl {
914907

915908
/** @internal */
916909
_setUpdateStrategy(opts?: ValidatorFn|ValidatorFn[]|AbstractControlOptions|null): void {
917-
if (isOptionsObj(opts) && (opts as AbstractControlOptions).updateOn != null) {
918-
this._updateOn = (opts as AbstractControlOptions).updateOn!;
910+
if (isOptionsObj(opts) && opts.updateOn != null) {
911+
this._updateOn = opts.updateOn!;
919912
}
920913
}
921914

0 commit comments

Comments
 (0)