过去两天我一直在制作网页,我选择使用TypeScript。
我选择Express.js作为Web服务器,并且我过去使用Express,所以我了解Express。
我看到TypeScript高度重视每个属性以及具有哪些属性,这是有问题的,因为默认情况下未设置属性“ user”,并且我想使用它来保存解码的用户会话。
在线搜索后,我发现了这一点
declare module "express" { // declare module "express-serve-static-core"
export interface Request {
user: any
}
}
此帖子:Typescript Error: Property 'user' does not exist on type 'Request'
我将其粘贴到文件中,并且效果很好,但是有两个问题:
答案 0 :(得分:1)
module
-是类型的全局命名空间。 reduce
。
名称空间是一种对相关代码进行逻辑分组的方法。这是内置的 进入TypeScript的方式与JavaScript中的变量声明不同 全局范围内,以及是否在其中使用了多个JavaScript文件 同一项目将有可能被覆盖或误解 相同的变量,这将导致“全局名称空间污染 问题”。
npm install --save @types/express
最好具有更好的类型覆盖率。
答案 1 :(得分:0)
问题1:在处理整个项目的基于标准TypeScript的工具中,例如tsc
和Visual Studio Code,在项目的任何文件中(例如,基于files
中的include
,exclude
和tsconfig.json
设置)对于使用原始模块的项目中的所有文件自动生效;无需显式引用包含扩充的文件。但是,ts-node
默认仅将文件传递给TypeScript,因为它们是在运行时加载的(documentation)。您可以使用--files
选项来获取ts-node
,以将整个项目传递给TypeScript。 (这足以使您的模块增强工作,但请注意,这仍然不能在运行时急切地 load 所有文件。为此,您必须使用import
或{{ 1}},那么您就不再需要require
。)