我正在用 TypeScript 编写一个库:@cjol/core
. 它有一个 JavaScript 依赖项dep
,它没有@types
可用的包。相反,我编写了一个自定义dep.d.ts
文件,它使所有类型在我开发库时都能很好地工作。一切都编译得很好,但我dep.d.ts
没有出现在输出中的任何地方。
当我尝试将我的库包含在另一个客户端项目@cjol/client
中时,客户端项目将无法编译。我收到这样的错误:
../core/build/index.d.ts:2:24 - error TS7016: Could not find a declaration file for module 'dep'. '/home/cjol/.../dep/index.js' implicitly has an 'any' type.
Try `npm install @types/dep` if it exists or add a new declaration (.d.ts) file containing `declare module 'dep';`
2 > import { Foo } from "dep";
我也在使用 Yarn 工作区(@cjol/core
并且@cjol/client
都是在同一个工作区中的包,在./core
和下./client
),但我认为这与这里无关。我需要@cjol/client
输出我的自定义定义文件,但我不知道如何实现它!
编辑1:同样,我不确定细节是否相关,但index.d.ts
看起来是这样的。如前所述,它是由 TypeScript 生成的。
import { Stuff } from "a-typescript-library";
import { Foo } from "dep";
export * from "./my-app-types";
declare type APIResponse<T> = {
/* ... */
};
export declare class API {
/* ... */
}
编辑 2:如下dep.d.ts
所示:
declare module "dep" {
import Something from "something.js";
export class DepClass {
/* loads of stuff */
}
}
编辑4:也许是另一种思考我的问题的方式。如果我编写了自定义.d.ts
文件,我该如何分发它?我需要创建一个包含类型定义的全新包吗?