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

qqilihq

我有一个自定义的类型定义扩展现有接口(快递Request如图所示这里)。内容express.d.ts

declare namespace Express {
  export interface Request {
    name: string
  }
}

工作正常。但是nameMyClass现在不是一个字符串,而是需要它成为一个自定义类类的定义如下:

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语句,我实际上成为了“模块” 不过,我仍然不清楚如何解决我的问题。

蒿甲醚

如评论中的@unional所述,一旦在文件中进行了顶级导入或导出,文件中的顶级作用域便成为与全局作用域分开的模块作用域。

要修改模块中的全局声明,您必须使用在全局名称空间中declare global进行引用Express

import { MyClass } from "../routes/myClass";
declare global {
  namespace Express {
    export interface Request {
      name: MyClass
    }
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章