是一种静态类型检查es模块导出的方法吗?正如下面的代码所描述的
// 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回购中找不到
发布于 2021-09-29 20:12:59
如您所知,目前没有办法注释模块的导出是否符合特定类型,也没有办法在消费端注释import语句。微软/打字稿#420和微软/打字稿#38511是这类功能的开放特性请求,但我不会乐观地看到在不久的将来会有任何变化。尽管如此,你还是可以去解决这些问题,并给他们你的。
不过,编译器当然知道模块的类型,因此,作为一种解决办法,您可以在模块符合您的类型的情况下,在某个地方进行分配。
对于您的示例来说,这可能是项目中某个地方的测试代码,如:
async function checks() {
let check: Module = await import('./file');
}如果成功了那就太好了。如果不是,它将告诉您哪些导出的file.ts成员不符合Module。
显然,这是一个解决办法,因为类型检查与导出模块位于一个单独的位置。但这总比根本不检查类型好。
发布于 2021-09-24 07:59:53
https://github.com/microsoft/TypeScript/issues/38511
这个问题是与这个问题有关的,于2020年5月13日开始发行,至今仍以开放形式发行。
https://stackoverflow.com/questions/69297129
复制相似问题