类型为import()。Client的参数不能分配给类型为import()。Client的参数

时间:2019-04-01 18:48:00

标签: javascript typescript

我有两个模块:

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

@ myorg / server

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

let client = new Client()
Middleware.run(client)

然后在其他模块中,我仅引用这样的类型:

@ myorg / middleware

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

export class Middleware {

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

}

进行此设置后,Middleware.run(client)给我以下错误:

  

类型'import(“ / framework / server / src / Client”)。Client'的参数不能分配给类型'import(“ / framework / server / types / Client”)。Client'的参数。

由于错误指出src(实际代码)和types.d.ts文件)不兼容。是什么原因造成的,我该如何解决?

2 个答案:

答案 0 :(得分:1)

还应该从与Client相同的源文件中,将@myorg/middleware中的类型@myorg/server导入。

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

答案 1 :(得分:0)

我有一个非常相似的问题,除了我的情况是,导入完全相同,除了文件名大小写不同。

file1.ts

import { Hub } from './hubs';

file2.ts

import { Hub } from './Hubs';

注意./Hubs./hubs大小写。它们是不同的,从而导致错误:

ERROR in app/file1.ts:107:45 - error TS2345: Argument of type 'import("MY_PATH/app/Hubs").Hub' is not assignable to parameter of type 'import("MY_PATH/app/hubs").Hub'.