您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Register a function to generate runtime window type definitions.
// ==UserScript== // @name Detect Types // @namespace https://github.com/SlashNephy // @version 0.1.0 // @author SlashNephy // @description Register a function to generate runtime window type definitions. // @description:ja window の型定義を生成する関数を登録します。 // @homepage https://scrapbox.io/slashnephy // @homepageURL https://scrapbox.io/slashnephy // @icon https://www.google.com/s2/favicons?sz=64&domain=* // @supportURL https://github.com/SlashNephy/userscripts/issues // @match https://*/* // @grant unsafeWindow // @license MIT license // ==/UserScript== (function () { 'use strict'; const escapeKey = (key) => { if (key.includes('.')) { return `'${key}'`; } return key; }; const getTypeString = (value) => { if (value === null) { return 'null'; } if (Array.isArray(value)) { if (value.length === 0) { return 'unknown[]'; } const types = Array.from(new Set(value.map(getTypeString))); if (types.length > 1) { return `(${types.join(' | ')})[]`; } return `${types.at(0)}[]`; } switch (typeof value) { case 'object': { const entries = Object.entries(value); if (entries.length === 0) { return 'Record<string, unknown>'; } return `{${entries.map(([k, v]) => `${escapeKey(k)}: ${getTypeString(v)}`).join(', ')}}`; } case 'function': return 'Function'; default: return typeof value; } }; unsafeWindow.getTypeString = getTypeString; unsafeWindow.printTypeString = (value) => { console.log(getTypeString(value)); }; })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址