如何在TypeScript中从DefinitelyTyped扩展类型声明

时间:2017-03-13 09:09:49

标签: typescript typescript2.0

作为具体示例,我尝试将Express.Response.locals的类型从any更改为特定于应用的AppLocals界面。我正在使用@types/express

我尝试了一些似乎不起作用的事情:

declare namespace express {
    export interface Response {
        locals: AppLocals
    }
}

给出错误:Import declaration conflicts with local declaration of 'express'来自文件头部的import * as express from 'express'

如果我尝试复制找到in the source的结构:

declare global {
    namespace Express {
        export interface Response {
            locals: AppLocals
        }
    }
}

然后处理程序中express.Response的locals属性仍为any类型。

如果我试试这个,只是为了它:

declare namespace Express {
    interface Response {
        locals: AppLocals
    }
}

TypeScript告诉我'Express' is declared but never used

1 个答案:

答案 0 :(得分:0)

这对我有用:

declare module "express" {
  interface Response {
    locals: AppLocals
  }
}

在我的情况下,我唯一想知道的是,如果我可以拥有多个这些并且TS合并locals的类型,我还没有能够做到这一点,所以我只是扩展我的其他从AppLocals路由特定的本地人并投射回复。