type-fest/test-d/unknown-array.ts
2023-11-04 20:56:45 +07:00

35 lines
1.1 KiB
TypeScript

import {expectAssignable, expectError, expectNotAssignable, expectType} from 'tsd';
import type {UnknownArray} from '../index';
declare const foo: readonly [];
declare const bar: {
readonly array: unknown[];
};
expectAssignable<UnknownArray>(foo);
expectAssignable<UnknownArray>(bar.array);
expectAssignable<UnknownArray>([]);
expectAssignable<UnknownArray>(['foo']);
expectNotAssignable<UnknownArray>(null);
expectNotAssignable(undefined);
expectNotAssignable({});
expectNotAssignable({0: 1});
expectNotAssignable(1);
expectNotAssignable(Date);
type IsArray<T> = T extends UnknownArray ? true : false;
declare const string: IsArray<string>;
expectType<false>(string);
declare const array: IsArray<[]>;
expectType<true>(array);
declare const tuple: IsArray<['foo']>;
expectType<true>(tuple);
declare const readonlyArray: IsArray<readonly number[]>;
expectType<true>(readonlyArray);
declare const leadingSpread: IsArray<readonly [number, ...string[]]>;
expectType<true>(leadingSpread);
declare const trailingSpread: IsArray<readonly [...string[], number]>;
expectType<true>(trailingSpread);