Extract necessary functions from type-fest (#120)
This commit is contained in:
parent
4b35ad5bec
commit
e31db97eab
2 changed files with 52 additions and 28 deletions
|
|
@ -2,7 +2,9 @@
|
||||||
/// <reference lib="dom"/>
|
/// <reference lib="dom"/>
|
||||||
/// <reference types="node"/>
|
/// <reference types="node"/>
|
||||||
|
|
||||||
export type Class<T = unknown> = new (...args: any[]) => T;
|
import {Class, TypedArray, ObservableLike, Primitive} from './types';
|
||||||
|
|
||||||
|
export {Class, TypedArray, ObservableLike, Primitive};
|
||||||
|
|
||||||
const typedArrayTypeNames = [
|
const typedArrayTypeNames = [
|
||||||
'Int8Array',
|
'Int8Array',
|
||||||
|
|
@ -18,19 +20,6 @@ const typedArrayTypeNames = [
|
||||||
'BigUint64Array'
|
'BigUint64Array'
|
||||||
] as const;
|
] as const;
|
||||||
|
|
||||||
export type TypedArray =
|
|
||||||
| Int8Array
|
|
||||||
| Uint8Array
|
|
||||||
| Uint8ClampedArray
|
|
||||||
| Int16Array
|
|
||||||
| Uint16Array
|
|
||||||
| Int32Array
|
|
||||||
| Uint32Array
|
|
||||||
| Float32Array
|
|
||||||
| Float64Array
|
|
||||||
| BigInt64Array
|
|
||||||
| BigUint64Array;
|
|
||||||
|
|
||||||
type TypedArrayTypeName = typeof typedArrayTypeNames[number];
|
type TypedArrayTypeName = typeof typedArrayTypeNames[number];
|
||||||
|
|
||||||
function isTypedArrayName(name: unknown): name is TypedArrayTypeName {
|
function isTypedArrayName(name: unknown): name is TypedArrayTypeName {
|
||||||
|
|
@ -80,15 +69,6 @@ const primitiveTypeNames = [
|
||||||
'symbol'
|
'symbol'
|
||||||
] as const;
|
] as const;
|
||||||
|
|
||||||
export type Primitive =
|
|
||||||
| null
|
|
||||||
| undefined
|
|
||||||
| string
|
|
||||||
| number
|
|
||||||
| bigint
|
|
||||||
| boolean
|
|
||||||
| symbol;
|
|
||||||
|
|
||||||
type PrimitiveTypeName = typeof primitiveTypeNames[number];
|
type PrimitiveTypeName = typeof primitiveTypeNames[number];
|
||||||
|
|
||||||
function isPrimitiveTypeName(name: unknown): name is PrimitiveTypeName {
|
function isPrimitiveTypeName(name: unknown): name is PrimitiveTypeName {
|
||||||
|
|
@ -319,11 +299,6 @@ is.domElement = (value: unknown): value is HTMLElement => {
|
||||||
DOM_PROPERTIES_TO_CHECK.every(property => property in value);
|
DOM_PROPERTIES_TO_CHECK.every(property => property in value);
|
||||||
};
|
};
|
||||||
|
|
||||||
export interface ObservableLike {
|
|
||||||
subscribe(observer: (value: unknown) => void): void;
|
|
||||||
[Symbol.observable](): ObservableLike;
|
|
||||||
}
|
|
||||||
|
|
||||||
is.observable = (value: unknown): value is ObservableLike => {
|
is.observable = (value: unknown): value is ObservableLike => {
|
||||||
if (!value) {
|
if (!value) {
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
49
source/types.ts
Normal file
49
source/types.ts
Normal file
|
|
@ -0,0 +1,49 @@
|
||||||
|
// Extracted from https://github.com/sindresorhus/type-fest/blob/78019f42ea888b0cdceb41a4a78163868de57555/index.d.ts
|
||||||
|
|
||||||
|
/**
|
||||||
|
Matches any [primitive value](https://developer.mozilla.org/en-US/docs/Glossary/Primitive).
|
||||||
|
*/
|
||||||
|
export type Primitive =
|
||||||
|
| null
|
||||||
|
| undefined
|
||||||
|
| string
|
||||||
|
| number
|
||||||
|
| boolean
|
||||||
|
| symbol
|
||||||
|
| bigint;
|
||||||
|
|
||||||
|
// TODO: Remove the `= unknown` sometime in the future when most users are on TS 3.5 as it's now the default
|
||||||
|
/**
|
||||||
|
Matches a [`class` constructor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes).
|
||||||
|
*/
|
||||||
|
export type Class<T = unknown, Arguments extends any[] = any[]> = new (...arguments_: Arguments) => T;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Matches any [typed array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray), like `Uint8Array` or `Float64Array`.
|
||||||
|
*/
|
||||||
|
export type TypedArray =
|
||||||
|
| Int8Array
|
||||||
|
| Uint8Array
|
||||||
|
| Uint8ClampedArray
|
||||||
|
| Int16Array
|
||||||
|
| Uint16Array
|
||||||
|
| Int32Array
|
||||||
|
| Uint32Array
|
||||||
|
| Float32Array
|
||||||
|
| Float64Array
|
||||||
|
| BigInt64Array
|
||||||
|
| BigUint64Array;
|
||||||
|
|
||||||
|
declare global {
|
||||||
|
interface SymbolConstructor {
|
||||||
|
readonly observable: symbol;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Matches a value that is like an [Observable](https://github.com/tc39/proposal-observable).
|
||||||
|
*/
|
||||||
|
export interface ObservableLike {
|
||||||
|
subscribe(observer: (value: unknown) => void): void;
|
||||||
|
[Symbol.observable](): ObservableLike;
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue