我有两个模块:
在一个模块中,我从另一个模块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
文件)不兼容。是什么原因造成的,我该如何解决?
答案 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'.