如何避免 dom / Deno 类型与 Typescript SSR 冲突
How to avoid dom / Deno type conflicts with Typescript SSR
我正在尝试使用基于 this guide 的 Typescript 和 Deno 设置 React SSR。基本设置有效,但是当我尝试添加 BlueprintJS 组件库时,我 运行 遇到了问题。
蓝图依赖于 Popper,它使用一些 DOM 类型,例如CSSStyleDeclaration
。我的 server.tsx
需要使用 Deno
对象 和 Popper(因为它需要 import { App } from "components/app.tsx";
)所以理论上我需要我的 tsconfig.json
同时包含 Deno 和 DOM 类型,如下所示:
"lib": ["dom", "dom.iterable", "esnext", "deno.ns", "deno.unstable"],
但是这不起作用,因为它们相互冲突。但我需要它们 - 如果我删除其中任何一个,那么我会丢失类型错误 - Deno
或 CSSStyleDeclaration
.
如何在不牺牲类型检查的情况下解决这个问题?
You can't,并且您需要单独 type-check 所有使用不兼容环境类型的模块,然后 运行 您的程序禁用 type-checking。
TypeScript 编译器(Deno 当前用于编译 TS 源文件的编译器)尚无法处理依赖于冲突环境类型的单个图中的模块。
我正在尝试使用基于 this guide 的 Typescript 和 Deno 设置 React SSR。基本设置有效,但是当我尝试添加 BlueprintJS 组件库时,我 运行 遇到了问题。
蓝图依赖于 Popper,它使用一些 DOM 类型,例如CSSStyleDeclaration
。我的 server.tsx
需要使用 Deno
对象 和 Popper(因为它需要 import { App } from "components/app.tsx";
)所以理论上我需要我的 tsconfig.json
同时包含 Deno 和 DOM 类型,如下所示:
"lib": ["dom", "dom.iterable", "esnext", "deno.ns", "deno.unstable"],
但是这不起作用,因为它们相互冲突。但我需要它们 - 如果我删除其中任何一个,那么我会丢失类型错误 - Deno
或 CSSStyleDeclaration
.
如何在不牺牲类型检查的情况下解决这个问题?
You can't,并且您需要单独 type-check 所有使用不兼容环境类型的模块,然后 运行 您的程序禁用 type-checking。
TypeScript 编译器(Deno 当前用于编译 TS 源文件的编译器)尚无法处理依赖于冲突环境类型的单个图中的模块。