fix(mermaid): 修复 tsc 类型错误
- mermaid.ts: initMermaid 早退路径(root 未命中)返回 Promise.resolve() 而非
undefined,匹配 Promise<void> 签名。
- theme-transition.test.ts: resolveAsync 改用 mutable 容器 { fn: null } 包裹,
绕过 TS 跨闭包控制流收窄(原 let + 闭包赋值,在 ?.() 处被判定为 null → never)。
上提交漏跑 tsc --noEmit(vitest 用 esbuild 不做类型检查),本次补验 tsc + vite build。
This commit is contained in:
parent
bdfc7a19e9
commit
0395c55213
@ -152,7 +152,7 @@ function observeBlock(pre: HTMLPreElement, render: () => Promise<void>): void {
|
||||
*/
|
||||
export function initMermaid(selector: string, theme: ThemeName): Promise<void> {
|
||||
const root = document.querySelector(selector);
|
||||
if (!root) return;
|
||||
if (!root) return Promise.resolve();
|
||||
|
||||
// 路径 1:未渲染的块(<code> 还在)。
|
||||
const blocks = root.querySelectorAll<HTMLPreElement>('pre > code.language-mermaid');
|
||||
|
||||
@ -210,13 +210,15 @@ describe('startThemeTransition', () => {
|
||||
writable: true,
|
||||
});
|
||||
|
||||
// registry 回调返回一个可控的 Promise,记录它是否在 callback resolve 前完成
|
||||
let resolveAsync: (() => void) | null = null;
|
||||
// registry 回调返回一个可控的 Promise,记录它是否在 callback resolve 前完成。
|
||||
// resolveAsync 用 mutable 容器包裹,绕过 TS 跨闭包的控制流收窄(否则在 ?.() 处
|
||||
// 被判定为 null → never)。
|
||||
const resolveAsync: { fn: (() => void) | null } = { fn: null };
|
||||
const asyncDone = { value: false };
|
||||
const off = onThemeChange((isDark) => {
|
||||
void isDark;
|
||||
return new Promise<void>((resolve) => {
|
||||
resolveAsync = () => {
|
||||
resolveAsync.fn = () => {
|
||||
asyncDone.value = true;
|
||||
resolve();
|
||||
};
|
||||
@ -230,7 +232,7 @@ describe('startThemeTransition', () => {
|
||||
expect(asyncDone.value).toBe(false);
|
||||
|
||||
// 触发异步任务完成
|
||||
resolveAsync?.();
|
||||
resolveAsync.fn?.();
|
||||
await callbackPromise;
|
||||
expect(asyncDone.value).toBe(true);
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user