Union and intersection types are convenient but can make code harder to read and maintain. So if a particular union or intersection is used in multiple places, the use of a type alias is recommended.

## Noncompliant Code Example

    function foo(x:string|null|number) { // Noncompliant
      // ...
    }
    function bar(x:string|null|number) {
      // ...
    }
    function zoo(): string|null|number {
      return null;
    }

## Compliant Solution

    type MyType = string | null | number;

    function foo(x: MyType) {
      // ...
    }
    function bar(x: MyType) {
      // ...
    }
    function zoo(): MyType {
      return null;
    }