如何从JavaScript文件导入变量并在TypeScript中使用它?

5ssjco0h  于 2023-05-30  发布在  TypeScript
关注(0)|答案(1)|浏览(248)

我正在尝试使用Webpack和Hogan.js预编译模板在TypeScript中创建一个userscript。
为了使它工作,我需要导入一个编译后的文件carousel_inner.js。此文件是自动生成的,因此不允许对其进行修改。

if (!!!templates) var templates = {};
templates["carousel_inner"] = new Hogan.Template({code: function (c,p,i) { var t=this;t.b(i=i||"");t.b("<a class=\"carousel-");t.b(t.v(t.f("class",c,p,0)));t.b("\" href=\"\" style=\"background-image: url(");t.b(t.v(t.f("background-image",c,p,0)));t.b(")\">\r");t.b("\n" + i);t.b("  <div>\r");t.b("\n" + i);t.b("    <h4>");t.b(t.v(t.f("h4",c,p,0)));t.b("</h4>\r");t.b("\n" + i);t.b("    <h5>");t.b(t.v(t.f("h5",c,p,0)));t.b("</h5>\r");t.b("\n" + i);t.b("    <p>");t.b(t.v(t.f("p",c,p,0)));t.b("</p>\r");t.b("\n" + i);t.b("  </div>\r");t.b("\n" + i);t.b("</a>");return t.fl(); },partials: {}, subs: {  }});

我尝试了不同的策略来导入templates变量并将其导出以供其他地方使用,但我总是以“templates is not defined”错误结束。
这是一次失败的尝试。

// index.ts
import "./js/carousel_inner";
export default templates;
// main.ts
import templates from "./templates";
console.log(`templates: ${templates}`);
9wbgstp7

9wbgstp71#

创建声明类型文件。
carousel_inner.d.ts(.d.ts为必填项)

declare module "carousel_inner.js" {
  interface types {
    [index:string]:unknown;
  } 
  /* OR */
  type types = unknown;
  /* OR */
  const types:unknown; 

  export default types;
}

它将为正在导入的文件给予类型。我偶尔使用以下方法导入sql文件。

declare module "*.sql" {
  const content: string;
  export default content;
}

只需要使用你想要的类型,而不是未知的。

相关问题