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 {