我有两个lit
元素,RootElement
和CustomElement
。RootElement
通过<script type="module">
直接导入到我的index.html
中,它显示得很好。为了导入CustomElement
,我把它放在RootElement
的render()
方法中:
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
中,我需要什么来说服转译器这个依赖是必要的,而不必在某个地方的无用语句中提供它?
2条答案
按热度按时间wxclj1h51#
我只需要导入模块,但不是作为默认导出:
字符串
c90pui9n2#
如手册中Additional Import下所述,您需要不带变量的导入:
在这种情况下,
import
什么也不做。但是,maths.ts
中的所有代码都被评估,这可能会触发影响其他对象的副作用。自定义元素被注册为副作用,所以你所需要的就是导入模块。这看起来像你有它:
字符串
就像在this other SO question中一样,即使是一个未使用的依赖项也是不够的:转译器可以出于礼貌删除未使用的变量,但是如果你指定没有变量可以使用,那么转译器将保留你导入的模块,并确保它在导入它的模块之前运行。