Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将HTML导入Typescript以用作TemplateStringLiteral_Html_Typescript - Fatal编程技术网

将HTML导入Typescript以用作TemplateStringLiteral

将HTML导入Typescript以用作TemplateStringLiteral,html,typescript,Html,Typescript,这是我第一次使用typescript,我想将typescript合并到我的网页包构建中 我正在使用ts加载器和babel加载器来加载ts文件,现在正试图将html文件加载到脚本中。(HTML) 这是我得到的错误 TS2345: Argument of type 'string[]' is not assignable to parameter of type 'TemplateStringsArray'. Property 'raw' is missing in type 'string[]'.

这是我第一次使用typescript,我想将typescript合并到我的网页包构建中

我正在使用ts加载器和babel加载器来加载ts文件,现在正试图将html文件加载到脚本中。(HTML)

这是我得到的错误

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;
}
但模板似乎有一个未定义的值

html是一个源于html的函数

export declare const html: (strings: TemplateStringsArray, ...values: any[]) => TemplateResult;
export const html = (strings, ...values) => {
    return new TemplateResult(strings, values, 'html', extendedPartCallback)
};
更新2

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

interface TemplateStringsArray extends ReadonlyArray<string> {
    readonly raw: ReadonlyArray<string>;
}

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

关于您的错误:

TS2345:类型为“string[]”的参数不可分配给类型为“TemplateStringsArray”的参数。 类型“string[]”中缺少属性“raw”

必须像下面这样包装参数以适合TemplateStringsArray接口:

const stringArray = [`${template}`];
return html({raw: stringArray, ...stringArray} as TemplateStringsArray);

通过这种方式,您可以提供所需的
raw
属性,并告诉
html()
-函数给定对象的类型为
TemplateStringsArray
答案的最终版本如下:

const stringArray = [`${template}`] as any;
stringArray.raw = [`${template}`];
return html(stringArray as TemplateStringsArray);

什么是
html
函数?这是从哪里导入的?我打赌这是lit html,所以我建议尝试
this.html`${template}`
这是lit html,
export declare const html:(strings:TemplateStringsArray,…value:any[])=>TemplateResult\u render(props){返回this.html
${template}
}
你想做什么?导入原始HTML并将其传递给lit HTML可能不会有什么用处。模板中的任何表达式实际上都不起作用。您好,谢谢您的回答,它指向了正确的方向,但是我恐怕我对这个问题的有限知识也需要您的专业知识。您可以看到,上面指定的代码的返回值是
{raw:values}
,但是我使用的库需要返回为
[raw:values]
的值,这就是为什么我使用的渲染函数返回未定义的值。为了解决这个问题,我需要更改哪些部分?我还将在上面的问题中包含一些关于TemplateStringsArray本身的信息。谢谢您的时间。我想知道,您正在使用的库是否正在像您描述的那样导出一个数组,因为严格来说,这与接口不匹配。但是无论如何,我很高兴你修复了它。按照这个方法,我从shady-render.js中得到了一个错误。它希望TemplateStringArray对象上有一个“join”方法,但由于某种原因,该方法似乎没有得到定义。
const stringArray = [`${template}`] as any;
stringArray.raw = [`${template}`];
return html(stringArray as TemplateStringsArray);