我有一个自定义类型定义来扩充现有界面(Express Request
,如图所示here)。内容express.d.ts
:
declare namespace Express {
export interface Request {
name: string
}
}
工作正常。但我现在需要将其作为自定义类name
,而不是MyClass
是一个字符串。类定义如下:
export class MyClass {
first: string;
last: string;
}
我将界面扩充更改为:
import { MyClass } from "../routes/myClass";
declare namespace Express {
export interface Request {
name: MyClass
}
}
现在,访问req.name
时出现以下错误:
error TS2339: Property 'name' does not exist on type 'Request'.
我发现,由于添加了express.d.ts
语句,我的import
实际上变成了“模块”。不过,我不清楚如何克服自己的问题。
答案 0 :(得分:2)
正如评论中提到的@unional,一旦您在文件中进行顶级导入或导出,文件中的顶级作用域就会变为模块作用域,与全局作用域分开。
要修改模块中的全局声明,您必须使用declare global
来引用全局命名空间中的Assets Notes 2017 2016
Cash 6 12000000 11000000
:
Express