{"id":1431,"date":"2025-08-01T01:23:29","date_gmt":"2025-08-01T01:23:29","guid":{"rendered":"https:\/\/www.gislxz.com\/?p=1431"},"modified":"2025-08-01T03:20:34","modified_gmt":"2025-08-01T03:20:34","slug":"typescript%e8%af%ad%e6%b3%95%e7%ac%94%e8%ae%b0","status":"publish","type":"post","link":"https:\/\/www.gislxz.com\/index.php\/2025\/08\/01\/typescript%e8%af%ad%e6%b3%95%e7%ac%94%e8%ae%b0\/","title":{"rendered":"Typescript\u8bed\u6cd5\u7b14\u8bb0"},"content":{"rendered":"\n<p>\u6df1\u62f7\u8d1d\u793a\u4f8b<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ \u589e\u5f3a\u7248\u6df1\u62f7\u8d1d (\u652f\u6301Set\/\u5faa\u73af\u5f15\u7528)\nexport const enhancedDeepClone = (obj, cache = new WeakMap()) => {\n  \/\/ \u57fa\u7840\u7c7b\u578b\u76f4\u63a5\u8fd4\u56de\n  if (obj === null || typeof obj !== 'object') return obj;\n  \n  \/\/ \u5faa\u73af\u5f15\u7528\u68c0\u6d4b\n  if (cache.has(obj)) return cache.get(obj);\n  \n  \/\/ \u7279\u6b8a\u5bf9\u8c61\u5904\u7406\n  const constructor = obj.constructor;\n  let clone;\n  \n  switch (constructor) {\n    case Date: \n      clone = new Date(obj);\n      break;\n    case Map:\n      clone = new Map(Array.from(obj, (&#91;k, v]) => &#91;k, enhancedDeepClone(v, cache)]));\n      break;\n    case Set:\n      clone = new Set(Array.from(obj, v => enhancedDeepClone(v, cache)));\n      break;\n    case RegExp:\n      clone = new RegExp(obj);\n      break;\n    default:\n      clone = Array.isArray(obj) ? &#91;] : Object.create(Object.getPrototypeOf(obj));\n  }\n  \n  \/\/ \u7f13\u5b58\u5f53\u524d\u5bf9\u8c61\u9632\u6b62\u5faa\u73af\u5f15\u7528\n  cache.set(obj, clone);\n  \n  \/\/ \u9012\u5f52\u62f7\u8d1d\u5c5e\u6027\n  Reflect.ownKeys(obj).forEach(key => {\n    clone&#91;key] = enhancedDeepClone(obj&#91;key], cache);\n  });\n  \n  return clone;\n};\n\n\/\/ \u589e\u5f3a\u7248\u7a7a\u503c\u8fc7\u6ee4 (\u53ef\u914d\u7f6e)\nexport const flexibleFilter = (obj, options = {}) => {\n  const {\n    filterNull = true,\n    filterUndefined = true,\n    filterEmptyString = true\n  } = options;\n  \n  return Object.fromEntries(\n    Object.entries(obj).filter((&#91;_, v]) => {\n      if (filterNull &amp;&amp; v === null) return false;\n      if (filterUndefined &amp;&amp; v === undefined) return false;\n      if (filterEmptyString &amp;&amp; v === '') return false;\n      return true;\n    })\n  );\n};<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>object<\/code>\u00a0\u7c7b\u578b\u5305\u542b\uff1a\u200b<strong>\u200b\u6570\u7ec4\u3001\u51fd\u6570\u3001\u7c7b\u3001\u5bf9\u8c61\u5b57\u9762\u91cf\u3001Date \u7b49\u200b<\/strong>\u200b\uff08\u9700\u7ed3\u6784\u5316\u6570\u636e\uff09\u3002<\/li>\n\n\n\n<li>\u200b<strong>\u200b\u975e\u00a0<code>object<\/code>\u00a0\u7c7b\u578b\u200b<\/strong>\u200b = \u57fa\u672c\u7c7b\u578b\uff08<code>string<\/code>,\u00a0<code>number<\/code>, \u7b49\uff09 + \u7279\u6b8a\u7c7b\u578b\uff08<code>any<\/code>,\u00a0<code>void<\/code>, \u7b49\uff09 + \u5b57\u9762\u91cf\u7c7b\u578b\u3002<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\u6df1\u62f7\u8d1d\u793a\u4f8b<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1431","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gislxz.com\/index.php\/wp-json\/wp\/v2\/posts\/1431","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gislxz.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gislxz.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gislxz.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gislxz.com\/index.php\/wp-json\/wp\/v2\/comments?post=1431"}],"version-history":[{"count":2,"href":"https:\/\/www.gislxz.com\/index.php\/wp-json\/wp\/v2\/posts\/1431\/revisions"}],"predecessor-version":[{"id":1434,"href":"https:\/\/www.gislxz.com\/index.php\/wp-json\/wp\/v2\/posts\/1431\/revisions\/1434"}],"wp:attachment":[{"href":"https:\/\/www.gislxz.com\/index.php\/wp-json\/wp\/v2\/media?parent=1431"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gislxz.com\/index.php\/wp-json\/wp\/v2\/categories?post=1431"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gislxz.com\/index.php\/wp-json\/wp\/v2\/tags?post=1431"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}