这是我第一次使用typescript,我想把typescript整合到我的webpack版本中。
我正在使用ts-loader和babel-loader加载ts文件,现在正在尝试将html文件加载到脚本中。(聚合物照明HTML)
import template from './template.html';
render(props) {
return html([`${template}`]);
}
这是我得到的错误
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文件的内容如下所示。
declare module '*.html' {
const content: string;
export default content;
}
但似乎模板的值是undefined。
html是一个来自lit html的函数。
export declare const html: (strings: TemplateStringsArray, ...values: any[]) => TemplateResult;
更新2
在对下面提供的答案进行了一些修改之后,发现返回值并不完全正确。现在的返回值是{raw: values}
,但是我需要将其更改为[raw: values]
。
interface TemplateStringsArray extends ReadonlyArray<string> {
readonly raw: ReadonlyArray<string>;
}
这是lit html中的html函数的一部分。
export const html = (strings, ...values) => {
return new TemplateResult(strings, values, 'html', extendedPartCallback)
};
基本上我需要将字符串的一部分更改为[raw : val]
,而不是{raw: val}
发布于 2018-06-25 01:12:21
正确工作的最终版本是这样的:
const stringArray = [`${template}`] as any;
stringArray.raw = [`${template}`];
return html(stringArray as TemplateStringsArray);
https://stackoverflow.com/questions/50706337
复制相似问题