4

TypeScript: でライブラリを作成しています@cjol/core。利用可能なパッケージdepがないJavaScript 依存関係があります。@types代わりに、カスタムdep.d.tsファイルを作成しました。これにより、ライブラリを開発するときにすべての型付けが適切に機能します。すべて正常にコンパイルされます、 mydep.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ファイルを作成した場合、どのように配布できますか? タイプ定義を含むまったく新しいパッケージを作成する必要がありますか?

4

2 に答える 2