首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将HTML导入Typescript以用作TemplateStringLiteral

将HTML导入Typescript以用作TemplateStringLiteral
EN

Stack Overflow用户
提问于 2018-06-06 02:03:27
回答 1查看 2.5K关注 0票数 10

这是我第一次使用typescript,我想把typescript整合到我的webpack版本中。

我正在使用ts-loader和babel-loader加载ts文件,现在正在尝试将html文件加载到脚本中。(聚合物照明HTML)

代码语言:javascript
复制
import template from './template.html';

render(props) {
    return html([`${template}`]);
}

这是我得到的错误

代码语言:javascript
复制
TS2345: Argument of type 'string[]' is not assignable to parameter of type 'TemplateStringsArray'.
Property 'raw' is missing in type 'string[]'.

你知道怎么解决这个问题吗?看起来我需要将模板转换成TemplateStringsArray,但我基本上不知道该怎么做。

更新1:

我创建的html.d.ts文件的内容如下所示。

代码语言:javascript
复制
declare module '*.html' {
    const content: string;
    export default content;
}

但似乎模板的值是undefined。

html是一个来自lit html的函数。

代码语言:javascript
复制
export declare const html: (strings: TemplateStringsArray, ...values: any[]) => TemplateResult;

更新2

在对下面提供的答案进行了一些修改之后,发现返回值并不完全正确。现在的返回值是{raw: values},但是我需要将其更改为[raw: values]

代码语言:javascript
复制
interface TemplateStringsArray extends ReadonlyArray<string> {
    readonly raw: ReadonlyArray<string>;
}

这是lit html中的html函数的一部分。

代码语言:javascript
复制
export const html = (strings, ...values) => {
    return new TemplateResult(strings, values, 'html', extendedPartCallback)
};

基本上我需要将字符串的一部分更改为[raw : val],而不是{raw: val}

EN

回答 1

Stack Overflow用户

发布于 2018-06-25 01:12:21

正确工作的最终版本是这样的:

代码语言:javascript
复制
const stringArray = [`${template}`] as any;
stringArray.raw = [`${template}`];
return html(stringArray as TemplateStringsArray);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50706337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档