Files
18xchat/assets/Scripts/chat18x/utils/polyfills.ts
T
2025-08-13 16:53:27 +08:00

47 lines
1.1 KiB
TypeScript

/**
* Polyfills for compatibility
* 提供兼容性支持的 polyfill 函数
*/
/**
* structuredClone polyfill for environments that don't support it
* 为不支持 structuredClone 的环境提供兼容实现
*/
export function initPolyfills(): void {
// structuredClone polyfill
if (typeof (globalThis as any).structuredClone === "undefined") {
(globalThis as any).structuredClone = function (obj: any): any {
if (obj === null || typeof obj !== "object") {
return obj;
}
if (obj instanceof Date) {
return new Date(obj.getTime());
}
if (Array.isArray(obj)) {
return obj.map((item: any) =>
(globalThis as any).structuredClone(item)
);
}
if (typeof obj === "object") {
const cloned: any = {};
for (const key in obj) {
if (obj.hasOwnProperty(key)) {
cloned[key] = (globalThis as any).structuredClone(obj[key]);
}
}
return cloned;
}
return obj;
};
//console.log('[Polyfill] structuredClone polyfill loaded');
}
}
// 自动初始化
initPolyfills();