【问题标题】:Declaration Merging in Script file vs in Module Results in Different Outcome脚本文件与模块中的声明合并导致不同的结果
【发布时间】:2022-11-15 11:26:54
【问题描述】:

我正在尝试通过 SessionData 接口将属性添加到 express-session 中的 req.session 对象。

我正在使用声明合并来这样做,但是我得到了一些我不理解的行为。

我做了以下事情:

declare module 'express-session' {
  interface SessionData{
    myProperty: myProperty_t
  }
}

我不明白的是,这仅在文件是模块(即具有顶级导入/导出)而不是脚本文件时才有效。

我原以为会反过来,因为我希望这种改变是全局的(这本质上是我对脚本与模块的理解)。

我的 Typescript 经验非常有限,我似乎无法找到(或者可能理解)与此相关的任何资源。

有人可以解释一下这里的区别吗?

【问题讨论】:

    标签: typescript express-session


    【解决方案1】:

    当您使用模块声明定义 .d.ts 文件时,它是您导出定义其使用方式的变量的方式:

    declare module test {
        // Global
        declare var variable: number;
        // Module
        declare const otherVariable: string;
    }
    

    您可以在手册的 Template 列表中了解有关各种 .d.ts 定义的更多信息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-26
      • 2017-07-07
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 2017-08-13
      相关资源
      最近更新 更多