import().Client 类型的参数不可分配给 import().Client 类型的参数

Get*_*awn 9 javascript typescript

我有两个模块:

在一个模块中,我引用了另一个模块中的函数run

@myorg/服务器

import { Client } from '.'
import { Middleware } from '@myorg/middleware'

let client = new Client()
Middleware.run(client)
Run Code Online (Sandbox Code Playgroud)

然后在另一个模块中我只引用这样的类型:

@myorg/中间件

// References a '.d.ts' file
import { Client } from '@myorg/server'

export class Middleware {

  public run(client: Client){
    // Do some stuff
  }

}
Run Code Online (Sandbox Code Playgroud)

当我进行此设置时,Middleware.run(client)出现以下错误:

'import("/framework/server/src/Client").Client' 类型的参数不可分配给 'import("/framework/server/types/Client").Client' 类型的参数。

正如错误指出的src(实际代码)和types.d.ts文件)不兼容。造成这种情况的原因是什么以及如何解决它?

J. *_*pas 6

您还应该从导入该类型的Client同一@myorg/middleware源文件中@myorg/server导入该类型。

说明:@myorg/middleware您正在从类型声明文件(.d.ts)导入类型Client,我假设您已使用指令在文件顶部引用了它///。而在@myorg/serverClient类型中,直接从实际源代码导入。因此 Typescript 不会将这两者视为相同,这就是您收到此错误的原因。