TypeScript JSDoc: module.exports 直接字面赋值未进行类型检查

fnvucqvd  于 4个月前  发布在  TypeScript
关注(0)|答案(2)|浏览(41)

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也应该根据类型进行类型检查。

相关问题

mpbci0fu

mpbci0fu1#

嘿,我对这个项目感兴趣。这个问题适合有TypeScript经验但没有直接参与的人吗?如果是的话,你能给我一个指点,告诉我在哪里可以修复这个问题吗?

n9vozmp4

n9vozmp42#

看起来这可能是另一个相关的问题:

$x_{1e0f1} = x_{1e0f2}$

相关问题