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> {
|
export function initMermaid(selector: string, theme: ThemeName): Promise<void> {
|
||||||
const root = document.querySelector(selector);
|
const root = document.querySelector(selector);
|
||||||
if (!root) return;
|
if (!root) return Promise.resolve();
|
||||||
|
|
||||||
// 路径 1:未渲染的块(<code> 还在)。
|
// 路径 1:未渲染的块(<code> 还在)。
|
||||||
const blocks = root.querySelectorAll<HTMLPreElement>('pre > code.language-mermaid');
|
const blocks = root.querySelectorAll<HTMLPreElement>('pre > code.language-mermaid');
|
||||||
|
|||||||
@ -210,13 +210,15 @@ describe('startThemeTransition', () => {
|
|||||||
writable: true,
|
writable: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
// registry 回调返回一个可控的 Promise,记录它是否在 callback resolve 前完成
|
// registry 回调返回一个可控的 Promise,记录它是否在 callback resolve 前完成。
|
||||||
let resolveAsync: (() => void) | null = null;
|
// resolveAsync 用 mutable 容器包裹,绕过 TS 跨闭包的控制流收窄(否则在 ?.() 处
|
||||||
|
// 被判定为 null → never)。
|
||||||
|
const resolveAsync: { fn: (() => void) | null } = { fn: null };
|
||||||
const asyncDone = { value: false };
|
const asyncDone = { value: false };
|
||||||
const off = onThemeChange((isDark) => {
|
const off = onThemeChange((isDark) => {
|
||||||
void isDark;
|
void isDark;
|
||||||
return new Promise<void>((resolve) => {
|
return new Promise<void>((resolve) => {
|
||||||
resolveAsync = () => {
|
resolveAsync.fn = () => {
|
||||||
asyncDone.value = true;
|
asyncDone.value = true;
|
||||||
resolve();
|
resolve();
|
||||||
};
|
};
|
||||||
@ -230,7 +232,7 @@ describe('startThemeTransition', () => {
|
|||||||
expect(asyncDone.value).toBe(false);
|
expect(asyncDone.value).toBe(false);
|
||||||
|
|
||||||
// 触发异步任务完成
|
// 触发异步任务完成
|
||||||
resolveAsync?.();
|
resolveAsync.fn?.();
|
||||||
await callbackPromise;
|
await callbackPromise;
|
||||||
expect(asyncDone.value).toBe(true);
|
expect(asyncDone.value).toBe(true);
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user