You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.9 KiB
67 lines
1.9 KiB
/// <reference lib="esnext"/> |
|
|
|
// TODO: This can just be `export type Primitive = not object` when the `not` keyword is out. |
|
/** |
|
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> = new(...arguments_: any[]) => 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; |
|
|
|
/** |
|
Matches a JSON object. |
|
|
|
This type can be useful to enforce some input to be JSON-compatible or as a super-type to be extended from. Don't use this as a direct return type as the user would have to double-cast it: `jsonObject as unknown as CustomResponse`. Instead, you could extend your CustomResponse type from it to ensure your type only uses JSON-compatible types: `interface CustomResponse extends JsonObject { … }`. |
|
*/ |
|
export type JsonObject = {[key: string]: JsonValue}; |
|
|
|
/** |
|
Matches a JSON array. |
|
*/ |
|
export interface JsonArray extends Array<JsonValue> {} |
|
|
|
/** |
|
Matches any valid JSON value. |
|
*/ |
|
export type JsonValue = string | number | boolean | null | JsonObject | JsonArray; |
|
|
|
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; |
|
}
|
|
|