typescript 静态类型检查 ES 模块导出

2023-12-06

是一种静态类型检查 es 模块导出的方法吗?作为code描述如下

// file.ts
export const x = 4
export const y = 'whatever'
export const foo = () => 2

// the interface describes the what the module exports
interface Module {
    x: 4
    y: string
    foo: () => number
}

我希望 file.ts 中的导出满足接口模块。打字稿可以处理这个吗?或者与此问题相关的任何问题,我在 github 存储库中找不到


如您所知,目前没有办法annotate模块的导出符合特定类型,也没有办法注释import消费方的声明。问题微软/TypeScript#420 and 微软/TypeScript#38511是针对此类功能的开放功能请求,但我对在不久的将来看到任何变化并不乐观。不过,您可能会去解决这些问题并给他们 ????。

编译器肯定knows不过,模块的类型,因此作为一种解决方法,您可以在某处进行分配,当且仅当模块符合您的类型时,该分配才有效。

对于您的示例,这可能是项目中某处的测试代码,例如:

async function checks() {
  let check: Module = await import('./file');
}

如果成功了,那就太好了。如果没有,它会告诉您 file.ts 的哪些导出成员不符合Module.

显然这是一种解决方法,因为类型检查位于与导出模块不同的位置。但这比根本没有类型检查要好。

堆栈闪电战示例

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

typescript 静态类型检查 ES 模块导出 的相关文章

随机推荐

  • 正则表达式检查两个第一个单词是否相同

    例如 s1 Test Test the rest of string s2 Test the rest of string 我想积极匹配 s1但不是 s2 因为第一个词 s1与第二个相同 单词 Test 例如 正则表达式应该适用于任何单词
  • 如何在JS中下载浏览器(包括Firefox)中的10个以上文件

    我尝试使用以下代码一次下载多个文件 var urls for var i 0 i lt urls length i var tempLink document createElement a tempLink setAttribute hr
  • 尝试编写一个通用函数来将 JSON 解析为可编码结构

    我目前正在像这样解析 JSON struct ExampleStruct Codable init implementation if let jsonData jsonString data using utf8 do let decod
  • UITableView iPhone SDK 中的延迟加载图像

    我需要在表视图中实现图像的延迟加载概念 以便首先向用户提供文本数据 然后向用户提供图像 我怎样才能在我的应用程序中实现这个 需要帮助 请 提前致谢 Shibin 我为我的项目创建的内容如下 通过 UITableViewCell Async
  • 为什么名为“del”、“return”等的对象属性是语法错误?

    我知道人们不应该能够替换 del return 等 关键字的行为 但我不明白为什么不可能这样做 myobj del mystr 解析器会将其与什么混淆 有办法允许吗 当然 我可以使用不同的名称 但我想在 AWS 工具 s3cmd 周围有一个
  • 嵌套模型中 mongoose-auto-increment 插件的问题

    我正在尝试增加procedureid doctorId每当 api 调用被触发时 我正在使用以下语法 但是 它给出了一个错误Treatment procedureid 1 dup key当我第二次通过浏览器调用api时 我可以看到 proc
  • 在视图中渲染数据之前在控制器中过滤数据

    你好 我是very new到 MVC5 Razor 和 EF 我已经寻找了两天 但仍然无法找到解决我的问题的方法 我想要做的是查看用户输入年份 季度和部门的视图 提交时 我希望另一个视图的控制器能够查看这些参数并在渲染视图之前过滤数据 目前
  • 计算列中零的百分比

    我在 DF df catch rate 中有一列捕获率数据 其中包含十进制值和零的组合 我想计算整列中零行的百分比 以表明它们对数据的贡献 mean df catch rate 会成功的 您可以添加参数na rm TRUE如果有NAs
  • AJAX 和 Coldfusion:执行数据库更新并反映更改而无需重新加载

    我在想象这里需要的解决方案时遇到问题 我正在处理的网站上有一个选择菜单 客户端希望能够选择一个名为 创建新源 的选项 然后会弹出一个 JS 窗口 其中包含一个空白字段 供用户选择输入新的原点 提交此表单后 数据库将被更新 选择菜单现在将包含
  • 使用 data.table 在单一条件下替换多列

    我想将默认值 255 更改为 NA dt lt data table x c 1 5 255 0 NA y c 1 7 255 0 0 z c 4 2 7 8 255 coords lt c x y 其中给出了以下代码 x y z 1 1
  • 字母数字的正则表达式,但至少一个字母

    在我的 ASP NET 页面中 我有一个输入框 必须对其进行以下验证 必须是字母数字 至少包含one字母 即不能是全部 数字 d a zA Z a zA Z0 9 基本上这意味着 零个或多个 ASCII 数字 一个 ASCII 字母字符 零
  • ConcurrentBag 是内存泄漏的原因吗? [复制]

    这个问题在这里已经有答案了 可能的重复 ConcurrentBag 中可能存在内存泄漏吗 我的应用程序中存在严重的内存泄漏 我在其中一种方法中添加到本地并发包集合中的所有数据从未被收集 这个简单的代码演示了我如何使用它 void Main
  • Mac OS X NodeJS:没有方法“路由器”错误

    使用 Mac Ports 在 MAC OS X 上安装 NodeJS v0 6 12 win764 node iwaldman which node opt local bin node win764 node iwaldman node
  • 如何将工作表复制到其他电子表格并将其移动到第一个(左侧)位置

    我正在使用我发现的脚本将活动工作表复制到文件夹中的所有其他电子表格 它工作得很好 但我实际上想要那张复印的纸被设置为其他电子表格中的第一个 最左侧 工作表 我知道 moveActiveSheet 但我似乎无法让它正常工作 我对脚本编写还是新
  • 通过 Jenkins 作为 Windows 服务运行时无法最大化浏览器

    通过 Windows 运行测试脚本时 我无法最大化浏览器窗口 因此脚本失败 尝试了该线程中提到的所有可能的方法 但没有用无法通过 Jenkins 中的 Selenium 设置 Chrome 浏览器的大小 增加大小 有没有办法最大化窗口 任何
  • Java Graphics2D Rotate 中的图像质量遭到破坏

    我在使用 Graphics2D 旋转方法旋转图像时遇到问题 这是我遇到的问题的图片 当我移动球时 图像在旋转时完全扭曲 这是我的旋转方法 public static void rotate BufferedImage img Rectang
  • 从内存中运行可执行文件

    我正在尝试直接从该可执行文件的 byte 表示形式作为 C 中的资源运行该可执行文件 所以基本上我想直接运行PE的一个字节 而不接触硬盘 我为此使用的代码曾经有效 但现在不再有效 该代码创建一个具有冻结主线程的进程 更改整个进程数据 最后恢
  • 设置文本视图+编辑文本+按钮

    我想在同一行中放置一个 TextView Edittext 和一个按钮 但我遇到的问题是该按钮未正确向左对齐 并且在小屏幕中 edittext 被整个填充 Small screen Big Screen 我的编码如下
  • 另一个 JNI、C++、DLL、UnsatisfiedLinkError

    我已经找了两天了 没有任何解决方案可以帮助我 所以我们再次开始 如何修复 JNI 中的 UnsatisfiedLinkError 这是我的java代码 package org lingenio util import java util p
  • typescript 静态类型检查 ES 模块导出

    是一种静态类型检查 es 模块导出的方法吗 作为code描述如下 file ts export const x 4 export const y whatever export const foo gt 2 the interface de