如何在 Typescript 中导入自定义文件类型

2023-11-25

作为一个有趣的项目,我正在制作一个用于创建本机 Web 组件的“框架”。我创建了一个 webpack 加载器,可以解析自定义的一些 XML.comp文件并导出 es2015 类。不幸的是,我找不到导入这些的方法.comp我的打字稿文件中的文件。

我尝试将自定义文件导入到常规 javascript 文件中,一切都按预期工作;我可以看到我创建的加载程序正在运行,并且得到了预期的输出。但是当我尝试导入打字稿文件时,我收到错误Cannot find module 'test/test.comp'。我尝试创建一个空的声明文件,并注意到错误消息更改为File '[path]/test/test.d.ts' is not a module

这是我的 webpack 配置:

mode: 'development',
watch: true,
entry: './test/main.js',
output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'build')
},
module: {
    rules: [
        {
            test: /\.ts/,
            use: 'ts-loader',
            exclude: /node_modules/
        },
        {
            test: /\.comp/,
            use: path.resolve(__dirname, 'core/compose-loader.js'),
            exclude: /node_modules/
        }
    ]
},
resolve: {
    extensions: ['.js', '.ts', '.comp'],
    alias: {
        'core': path.resolve(__dirname, "core/"),
        'test': path.resolve(__dirname, "test/")
    }
}

还有我的 tsconfig.json

{
    "compilerOptions": {
        "outDir": "build",
        "baseUrl": ".",
        "paths": {
            "core": ["core/*"],
            "test": ["test/*"]
        },
        "target": "es2015",
        "typeRoots": ["./core"]

    },
    "include": [
        "test/*.ts"
    ],
    "exclude": [
        "core",
        "node_modules",
        "**/*.comp"
    ]
}

您可以使用以下命令定义所有这些文件的类型*.comp in a declarations.d.ts文件(或您选择的任何名称)。

declare module "*.comp" {
  const value: any; // Add better type definitions here if desired.
  export default value;
}

您可能还需要将其添加到typeRoots在你的tsconfig.json

{
    "compilerOptions": {
        // Other configuration...
        "typeRoots": [
            "./src/declarations.d.ts"
        ]
    }
}

现在,import value from "./test.comp"应该按预期工作(至少是类型)。

注意:对于 VSCode,定义文件在文件夹结构中不应高于导入文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Typescript 中导入自定义文件类型 的相关文章

随机推荐

  • Git 默认文件(第一次拉取后忽略)

    你会如何在 git 中设置这个场景 我的源有一个设置文件 其中包含数据库连接凭据等配置设置 这是 Drupal 源 我指的是 settings php 当开发人员克隆源代码时 他们需要进入并更改特定于其环境的设置 当然 这些变化不应该被推回
  • 为什么 angular.isNumber() 没有按预期工作?

    看起来好像 AngularJS 的angular isNumber不管用 它不适用于数字字符串 难道我做错了什么 我应该只使用isNaN angular isNumber 95 55 false angular isNumber 95 55
  • 重命名 WooCommerce 订单状态

    我想将 WooCommerce 订单状态从 已完成 重命名为 订单已收到 我可以编辑位于 wc order functions php 中的以下脚本 但我不想修改任何核心文件或使用插件 是否可以使用子主题中的脚本覆盖 woocommerce
  • JAXB 避免保存默认值

    有没有什么方法可以让 JAXB 不保存值是 Element 注释中指定的默认值的字段 然后在从 XML 加载 null 或空元素时将值设置为该值 一个例子 class Example XmlElement defaultValue defa
  • 使用 create-react-app 时使用自定义构建输出文件夹

    Facebook 提供了一个create react app command构建反应应用程序 当我们跑步时npm run build 我们看到输出 build文件夹 npm 运行构建 将用于生产的应用程序构建到构建文件夹 正确的是 在生产模
  • 如何从 JavaScript 中包含重复项的数组中获取唯一值的数组? [复制]

    这个问题在这里已经有答案了 Given a 0 1 1 2 3 3 3 数组 结果应该是 0 1 2 3 Edited ES6解决方案 new Set a 选择 Array from new Set a 老回应 O n 2 不要将其用于大型
  • 正则表达式仅在所需字符串之前未直接包含字符时匹配

    我正在尝试解决这个CodingBat问题 如果给定字符串包含 xyz 其中 xyz 前面没有直接加句点 则返回 true 因此 xxyz 有效 但 x xyz 无效 xyzThere abcxyz truexyzThere abc xyz
  • 可以使用AJAX+跨域+jsonp测试URL是否可达吗?

    我正在使用 JQuery 从 URL 获取信息并将其异步显示在我的页面上 URL 来自其他域 因此我使用 JSONP 来获取数据 效果很好 但是 当远程 URL 关闭时 偶尔会发生 我的页面会挂起jQuery AJAX不调用 成功 或 错误
  • 在 Angular2 TypeScript 中注释(出)代码

    我有以下 Angular2 TypeScript 代码 其中有一个部分根据 Javascript 约定被注释掉 Component selector my app template h1 title h1 h2 lene name h2 d
  • Python 将列表作为参数传递[重复]

    这个问题在这里已经有答案了 如果我要运行这段代码 def function y y append yes return y example list function example print example 即使我没有直接更改变量 ex
  • 如何最好地处理存储在 Google BigQuery 中不同位置的数据?

    我当前在 BigQuery 中的工作流程如下 1 查询公共存储库中的数据 存储在美国 2 将其写入我的存储库中的表中 3 将 csv 导出到云存储桶 以及 4 在我工作的服务器上下载 csv并 5 在服务器上使用它 我现在遇到的问题是我工作
  • 在 asp.net 中收到阿拉伯日期时间错误

    我使用ADO断开模式通过填充数据集ds从数据库获取数据 除日期字段外所有数据均为真 string strDate ds Tables 0 Rows 0 H DT ToString 它抛出一个异常说 此日历不支持指定时间 应该是介于 1900
  • robolectric 2 - 有意图地创建活动

    是否使用创建活动 withIntent 在 Robolectric 2 中不起作用 我正在做以下事情 activity Robolectric buildActivity MyActivity class create withIntent
  • 无法解析主 URL:'spark:http://localhost:18080'

    当我尝试运行我的代码时它会抛出这个Exception Exception in thread main org apache spark SparkException Could not parse Master URL spark htt
  • 递归删除目录和所有符号链接

    我尝试使用shutil删除目录及其所有包含的文件 如下所示 import shutil from os path import exists if exists path dir shutil rmtree path dir 不幸的是 我的
  • 我的 CPAN 中的 Perl 模块无法安装,我该怎么办?

    这是上述问题的典型问题 灵感来自这个答案 and 这个问题 请编辑并完善 我正在尝试使用 CPAN cpanm CPANPLUS 客户端从 CPAN 安装模块 但是 当我尝试安装它时遇到构建或测试错误 我应该怎么办 它到底能建造吗 首先要考
  • 猫没啥用?

    这可能在许多常见问题解答中 而不是使用 cat file command 这被称为猫的无用使用 正确的方法应该是 command lt file 第二种 正确 方式 操作系统不必生成额外的进程 尽管知道这一点 我仍然继续使用无用的猫 原因有
  • 双击或使用按钮将相机从后切换到前(Xcode 8、Swift 3)

    所以 最近我一直在尝试在 Swift 3 中实现将相机视图从后置摄像头切换到前置摄像头的功能 但是 没有成功 目前 我的默认视图来自后置摄像头 我可以用它拍照然后重新拍摄 但是有人可以帮助我并展示如何双击屏幕来切换摄像头或简单地使用指定的按
  • 在 iOS7 或 TextKit 中使用什么代替scrollRangeToVisible

    在以前版本的 iOS 中 我的UITextView将滚动到底部使用 displayText scrollRangeToVisible NSMakeRange 0 displayText text length or CGFloat topC
  • 如何在 Typescript 中导入自定义文件类型

    作为一个有趣的项目 我正在制作一个用于创建本机 Web 组件的 框架 我创建了一个 webpack 加载器 可以解析自定义的一些 XML comp文件并导出 es2015 类 不幸的是 我找不到导入这些的方法 comp我的打字稿文件中的文件