Dune Tools Dune Tools Collection

Shared

共享 Hook 与 TypeScript 类型工具(useIsomorphicLayoutEffect / OptionalKeys / Overwrite / Print)

Shared

@dune2/tools/shared 提供了一些在多个模块间通用的能力:一个 SSR/CSR 兼容的 Hook,以及若干 TypeScript 类型工具。

useIsomorphicLayoutEffect

当代码会在 SSR 环境运行时,直接使用 useLayoutEffect 会产生警告;useIsomorphicLayoutEffect 会在浏览器使用 useLayoutEffect,在 SSR 自动回退为 useEffect

import { useIsomorphicLayoutEffect } from '@dune2/tools/shared';

useIsomorphicLayoutEffect(() => {
  // 安全:SSR 时等价于 useEffect
}, []);

类型工具

OptionalKeys

用于取出 “A 中哪些 key 在 B 中是可选/可覆盖的” 的 key 集合(常用于组合 props 类型)。

import type { OptionalKeys } from '@dune2/tools/shared/OptionalKeys';

Overwrite

用 B 覆盖 A 的同名字段类型。

import type { Overwrite } from '@dune2/tools/shared/Overwrite';

type A = { id: string; count: number };
type B = { count: string };
type C = Overwrite<A, B>; // { id: string; count: string }

Print

辅助“展开”复杂类型,方便在 IDE 里查看最终类型结果(类型调试用)。

import type { Print } from '@dune2/tools/shared/Print';

On this page