Bug报告
首先,感谢你们对TypeScript及其生态系统的持续工作🙌
在使用module.exports = <object literal>
之前,它不会检查分配值的类型。
在JS/TS生态系统中的工具中使用module.exports = <object literal>
是一种常见的模式。
🔎搜索词
module.exports, node, Node.js, CommonJS, JSDoc
🕗版本与回归信息
- 这是我尝试的每个版本的行为,我查阅了有关模块的常见问题解答条目
⏯Playground链接
带有相关代码的Playground链接
💻代码
const m = {}
/** @type {{ a: 1 }} */
m.exports = {
a: 2, // ✅ Error, as expected
};
/** @type {{ a: 1 }} */
module.exports = {
a: 2, // 💥 No error, unexpected
}
这也发生在一个非嵌套对象上:
/** @type {{ a: 1 }} */
const exports = {
a: 2, // ✅ Error, as expected
};
/** @type {{ a: 1 }} */
module.exports = {
a: 2, // 💥 No error, unexpected
}
Playground
🙁实际行为
module.exports
对象在使用JSDoc时没有进行类型检查,但变量进行了类型检查。
🙂预期行为
module.exports
也应该根据类型进行类型检查。
2条答案
按热度按时间mpbci0fu1#
嘿,我对这个项目感兴趣。这个问题适合有TypeScript经验但没有直接参与的人吗?如果是的话,你能给我一个指点,告诉我在哪里可以修复这个问题吗?
n9vozmp42#
看起来这可能是另一个相关的问题:
$x_{1e0f1} = x_{1e0f2}$