make structuredClone generic (#1520)
Co-authored-by: saschanaz <saschanaz@users.noreply.github.com>
This commit is contained in:
Родитель
e6154ef49c
Коммит
8e5f5db964
|
@ -17776,7 +17776,7 @@ interface WindowOrWorkerGlobalScope {
|
|||
reportError(e: any): void;
|
||||
setInterval(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;
|
||||
setTimeout(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;
|
||||
structuredClone(value: any, options?: StructuredSerializeOptions): any;
|
||||
structuredClone<T = any>(value: T, options?: StructuredSerializeOptions): T;
|
||||
}
|
||||
|
||||
interface WindowSessionStorage {
|
||||
|
@ -19193,7 +19193,7 @@ declare function queueMicrotask(callback: VoidFunction): void;
|
|||
declare function reportError(e: any): void;
|
||||
declare function setInterval(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;
|
||||
declare function setTimeout(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;
|
||||
declare function structuredClone(value: any, options?: StructuredSerializeOptions): any;
|
||||
declare function structuredClone<T = any>(value: T, options?: StructuredSerializeOptions): T;
|
||||
declare var sessionStorage: Storage;
|
||||
declare function addEventListener<K extends keyof WindowEventMap>(type: K, listener: (this: Window, ev: WindowEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
||||
declare function addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
||||
|
|
|
@ -5751,7 +5751,7 @@ interface WindowOrWorkerGlobalScope {
|
|||
reportError(e: any): void;
|
||||
setInterval(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;
|
||||
setTimeout(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;
|
||||
structuredClone(value: any, options?: StructuredSerializeOptions): any;
|
||||
structuredClone<T = any>(value: T, options?: StructuredSerializeOptions): T;
|
||||
}
|
||||
|
||||
interface WorkerGlobalScopeEventMap {
|
||||
|
@ -6129,7 +6129,7 @@ declare function queueMicrotask(callback: VoidFunction): void;
|
|||
declare function reportError(e: any): void;
|
||||
declare function setInterval(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;
|
||||
declare function setTimeout(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;
|
||||
declare function structuredClone(value: any, options?: StructuredSerializeOptions): any;
|
||||
declare function structuredClone<T = any>(value: T, options?: StructuredSerializeOptions): T;
|
||||
declare function addEventListener<K extends keyof ServiceWorkerGlobalScopeEventMap>(type: K, listener: (this: ServiceWorkerGlobalScope, ev: ServiceWorkerGlobalScopeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
||||
declare function addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
||||
declare function removeEventListener<K extends keyof ServiceWorkerGlobalScopeEventMap>(type: K, listener: (this: ServiceWorkerGlobalScope, ev: ServiceWorkerGlobalScopeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
||||
|
|
|
@ -5602,7 +5602,7 @@ interface WindowOrWorkerGlobalScope {
|
|||
reportError(e: any): void;
|
||||
setInterval(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;
|
||||
setTimeout(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;
|
||||
structuredClone(value: any, options?: StructuredSerializeOptions): any;
|
||||
structuredClone<T = any>(value: T, options?: StructuredSerializeOptions): T;
|
||||
}
|
||||
|
||||
interface WorkerEventMap extends AbstractWorkerEventMap {
|
||||
|
@ -6140,7 +6140,7 @@ declare function queueMicrotask(callback: VoidFunction): void;
|
|||
declare function reportError(e: any): void;
|
||||
declare function setInterval(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;
|
||||
declare function setTimeout(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;
|
||||
declare function structuredClone(value: any, options?: StructuredSerializeOptions): any;
|
||||
declare function structuredClone<T = any>(value: T, options?: StructuredSerializeOptions): T;
|
||||
declare function addEventListener<K extends keyof SharedWorkerGlobalScopeEventMap>(type: K, listener: (this: SharedWorkerGlobalScope, ev: SharedWorkerGlobalScopeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
||||
declare function addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
||||
declare function removeEventListener<K extends keyof SharedWorkerGlobalScopeEventMap>(type: K, listener: (this: SharedWorkerGlobalScope, ev: SharedWorkerGlobalScopeEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
|
||||
|
|
|
@ -6092,7 +6092,7 @@ interface WindowOrWorkerGlobalScope {
|
|||
reportError(e: any): void;
|
||||
setInterval(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;
|
||||
setTimeout(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;
|
||||
structuredClone(value: any, options?: StructuredSerializeOptions): any;
|
||||
structuredClone<T = any>(value: T, options?: StructuredSerializeOptions): T;
|
||||
}
|
||||
|
||||
interface WorkerEventMap extends AbstractWorkerEventMap {
|
||||
|
@ -6650,7 +6650,7 @@ declare function queueMicrotask(callback: VoidFunction): void;
|
|||
declare function reportError(e: any): void;
|
||||
declare function setInterval(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;
|
||||
declare function setTimeout(handler: TimerHandler, timeout?: number, ...arguments: any[]): number;
|
||||
declare function structuredClone(value: any, options?: StructuredSerializeOptions): any;
|
||||
declare function structuredClone<T = any>(value: T, options?: StructuredSerializeOptions): T;
|
||||
declare function cancelAnimationFrame(handle: number): void;
|
||||
declare function requestAnimationFrame(callback: FrameRequestCallback): number;
|
||||
declare function addEventListener<K extends keyof DedicatedWorkerGlobalScopeEventMap>(type: K, listener: (this: DedicatedWorkerGlobalScope, ev: DedicatedWorkerGlobalScopeEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
|
||||
|
|
|
@ -252,6 +252,25 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"structuredClone": {
|
||||
"signature": {
|
||||
"0": {
|
||||
"typeParameters": [
|
||||
{
|
||||
"name": "T",
|
||||
"default": "any"
|
||||
}
|
||||
],
|
||||
"param": [
|
||||
{
|
||||
"name": "value",
|
||||
"overrideType": "T"
|
||||
}
|
||||
],
|
||||
"overrideType": "T"
|
||||
}
|
||||
}
|
||||
},
|
||||
"clearTimeout": {
|
||||
"signature": {
|
||||
"0": {
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
function assertType<T>(_x: T) {}
|
||||
|
||||
const toBeCloned = {
|
||||
name: "abc",
|
||||
address: "test",
|
||||
age: 30,
|
||||
info: {
|
||||
url: "https://example.com",
|
||||
},
|
||||
} as const;
|
||||
|
||||
const nonMatchingType = { foo: "bar" } as const;
|
||||
const clone = structuredClone(toBeCloned);
|
||||
|
||||
assertType<typeof toBeCloned>(clone);
|
||||
// @ts-expect-error non matching type
|
||||
assertType<typeof nonMatchingType>(clone);
|
Загрузка…
Ссылка в новой задаче