import {expectType} from 'tsd'; import type {Arrayable} from '../index.d.ts'; declare const unknown: unknown; expectType>(unknown as string | string[]); expectType>(unknown as (string | {foo: number}) | Array); expectType>(unknown as /* never | */ never[]); expectType>(unknown as string[] | string[][]); // Test for issue https://github.com/sindresorhus/type-fest/issues/952 type Item = number; function castArray1(value: Arrayable): Item[] { return Array.isArray(value) ? value : [value]; } expectType(unknown as ReturnType); function castArray2(value: Arrayable): T[] { return Array.isArray(value) ? value : [value]; } expectType(castArray2(1)); expectType(castArray2([1, 2, 3]));