是一种静态类型检查 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(使用前将#替换为@)