首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类型记录静态类型检查ES模块导出

类型记录静态类型检查ES模块导出
EN

Stack Overflow用户
提问于 2021-09-23 09:07:39
回答 2查看 219关注 0票数 1

是一种静态类型检查es模块导出的方法吗?正如下面的代码所描述的

代码语言:javascript
复制
// 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回购中找不到

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-29 20:12:59

如您所知,目前没有办法注释模块的导出是否符合特定类型,也没有办法在消费端注释import语句。微软/打字稿#420微软/打字稿#38511是这类功能的开放特性请求,但我不会乐观地看到在不久的将来会有任何变化。尽管如此,你还是可以去解决这些问题,并给他们你的。

不过,编译器当然知道模块的类型,因此,作为一种解决办法,您可以在模块符合您的类型的情况下,在某个地方进行分配。

对于您的示例来说,这可能是项目中某个地方的测试代码,如:

代码语言:javascript
复制
async function checks() {
  let check: Module = await import('./file');
}

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

显然,这是一个解决办法,因为类型检查与导出模块位于一个单独的位置。但这总比根本不检查类型好。

Stackblitz示例

票数 2
EN

Stack Overflow用户

发布于 2021-09-24 07:59:53

https://github.com/microsoft/TypeScript/issues/38511

这个问题是与这个问题有关的,于2020年5月13日开始发行,至今仍以开放形式发行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69297129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档