如何从TypeScript中的DefinitelyTyped扩展类型声明
作为一个具体的例子,我试图将如何从TypeScript中的DefinitelyTyped扩展类型声明,typescript,typescript2.0,Typescript,Typescript2.0,作为一个具体的例子,我试图将Express.Response.locals的类型从any更改为特定于应用程序的AppLocals接口。我正在使用@types/express 我尝试了一些似乎都不起作用的方法: declare namespace express { export interface Response { locals: AppLocals } } 给出错误:Import声明与文件开头的Import*as express中的本地声明“express
Express.Response.locals
的类型从any
更改为特定于应用程序的AppLocals
接口。我正在使用@types/express
我尝试了一些似乎都不起作用的方法:
declare namespace express {
export interface Response {
locals: AppLocals
}
}
给出错误:Import声明与文件开头的Import*as express中的本地声明“express”
冲突
如果我尝试复制找到的结构:
那么处理程序中express.Response
的locals属性仍然是any
类型
如果我尝试这个,只是为了见鬼:
declare namespace Express {
interface Response {
locals: AppLocals
}
}
TypeScript告诉我,'Express'已声明,但从未使用过
这对我很有用:
declare module "express" {
interface Response {
locals: AppLocals
}
}
在我的例子中,我唯一想知道的是,我是否可以有多个这样的选项,并让TS合并局部变量的类型,我还没有做到这一点,所以我只是从AppLocals
扩展我的其他路由特定局部变量并抛出响应。这对我来说很有效:
declare module "express" {
interface Response {
locals: AppLocals
}
}
在我的例子中,我唯一想知道的是,如果我可以有多个,并且让TS合并局部变量
的类型,我还不能这样做,所以我只是从AppLocals
扩展我的其他路由特定局部变量,并转换响应。您不能更改现有属性的类型。您可以添加更多属性,但已设置的属性不能更改。您不能更改现有属性的类型。您可以添加更多属性,但已设置的属性不能更改。