webpack Lit-element依赖项未被TypeScript识别

kcwpcxri  于 9个月前  发布在  Webpack
关注(0)|答案(2)|浏览(93)

我有两个lit元素,RootElementCustomElementRootElement通过<script type="module">直接导入到我的index.html中,它显示得很好。为了导入CustomElement,我把它放在RootElementrender()方法中:

render() {
    return html`<script
        type="module"
        src="./path/to/customelement.ts"
      ></script>
      <custom-element></custom-element>`;
  }

字符串
但是UI中什么也没有显示。如果我在代码的顶部放置一个import语句,如下所示:

import { CustomElement } from "./path/to/customelement.ts";


然后它显示为“未使用”,这是有意义的,因为我没有将它包含在代码中。
但是,如果我在代码中的某个地方包含了CustomElement(例如,作为文件底部的单个语句CustomElement;),那么它就不再被标记为“未使用”,并且<custom-element></custom-element>会像我预期的那样正确呈现。
这是怎么回事?在tsconfig.js中,我需要什么来说服转译器这个依赖是必要的,而不必在某个地方的无用语句中提供它?

wxclj1h5

wxclj1h51#

我只需要导入模块,但不是作为默认导出:

import "./path/to/customelement.ts";

字符串

c90pui9n

c90pui9n2#

如手册中Additional Import下所述,您需要不带变量的导入:
在这种情况下,import什么也不做。但是,maths.ts中的所有代码都被评估,这可能会触发影响其他对象的副作用。
自定义元素被注册为副作用,所以你所需要的就是导入模块。这看起来像你有它:

import "./path/to/customelement.ts";

字符串
就像在this other SO question中一样,即使是一个未使用的依赖项也是不够的:转译器可以出于礼貌删除未使用的变量,但是如果你指定没有变量可以使用,那么转译器将保留你导入的模块,并确保它在导入它的模块之前运行。

相关问题