Typescript自定义类型定义在导入类上中断

时间:2017-12-26 11:25:54

标签: typescript module interface

我有一个自定义类型定义来扩充现有界面(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实际上变成了“模块”。不过,我不清楚如何克服自己的问题。

1 个答案:

答案 0 :(得分:2)

正如评论中提到的@unional,一旦您在文件中进行顶级导入或导出,文件中的顶级作用域就会变为模块作用域,与全局作用域分开。

要修改模块中的全局声明,您必须使用declare global来引用全局命名空间中的Assets Notes 2017 2016 Cash 6 12000000 11000000

Express