TL; DRコンパイルされたPureScriptモジュールにTypeScriptタイピングを作成し、npmパッケージに配布したいとします。私は手動でこれらの型を維持することに満足しています。私はtsconfig.json(アップストリームとダウンストリーム)とpackage.jsonに何を入れる必要があるのか分かりません。PureScriptからコンパイルされたJavaScriptモジュールを使用するTypeScriptプロジェクトを設定するにはどうすればよいですか?
Iは、コア機能は、活字体CLIとPureScriptに実装されprojectがあり、このすべては、最終的にNPMを介したJavaScriptとして配布されています。私は安全に活字体からそれらを使用することができますので、私はPureScriptモジュールの活字体のタイプを定義types/People.d.ts
で
module People where
type Person = { name :: String }
david :: Person
david = { name: "David "}
:私はコア機能を定義src/People.purs
で
.
├── cli # TypeScript CLI project
│ ├── main.ts
│ └── tsconfig.json
│
├── output # Compiled PureScript modules
│ └── People
│ ├── externs.json
│ └── index.js
│
├── src # PureScript source
│ └── People.purs
│
└── types # TypeScript types for PureScript modules
└── People.d.ts
:私はシンプルなレイアウトでsimilar projectを作成しました:
declare module "People" {
export interface Person {
name: string;
}
export const david: Person;
}
最後に、cli/main.ts
に、私はTypeScでコンパイルさPureScriptモジュールをインポートしたいです私が定義したRIPT種類:彼らは絶対paths-を使用していないので、
import * as People from "People";
console.log(People.david);
私はこれが構築するために、私は究極のJavaScript(node cli/main.js
)を実行しようとすると、tsc
によって生成require
呼び出しが失敗得ることができますこの場合、require("People")
はrequire("./People")
である必要があります。 TypeScriptでimport
ステートメントを相対化すると、入力の関連付けが解除されます。
私は、これらの目標を達成に苦労しています:
- は活字体からインポートされたすべてのPureScriptモジュール用の活字体のタイピングを維持します。
- TypeScriptの型チェックが確実に行われるようにしてください。
- 実行時に
require
がPureScriptモジュールを呼び出すようにしてください。 - TypeScriptコンシューマがこれらのタイプ入力を使用できるように、npmパッケージでTypeScriptタイピングを配布します。
TypeScriptのPureScriptモジュールが必要な経験があり、これをnpm経由で配布する経験があれば、本当に参考になります!
ああ、はい、タイプミスがありますが、それは問題ではありません。あなたが提案した手動キャスティングを試してみましたが、それは機能しましたが、タイピングはnpmで配布されなかったので、私のライブラリのクライアントはそのタイプを取得しませんでした。 –