現在の状況:
以下で定義されたクラスがあります。
lib/components/widgets/MyWidget.ts:
export class MyWidget {
public property1: string;
/* ... more properties ... */
}
javascript にコンパイルされ、lib-min.jsの結果として他のファイルにバンドルされます。
lib/components/widgets/MyWidget.tsにあったため、次のような定義「コレクション」ファイル ( mydefinition.d.ts ) を作成しました。
declare module "lib/components/widgets" {
export class MyWidget {
/* documentation of property1 */
public property1: string;
/* ... more properties ... */
}
}
interface MyOption {/* ... */}
このようにして、次のように使用できます (もちろん、lib-min.jsをページに含めた後):
import { MyWidget } from "lib/components/widgets/MyWidget";
let myInstance = new MyWidget();
問題:
この種の重複を維持することは圧倒的であり、簡単に間違いを犯す可能性があることは明らかだと思います. また、typescript 2+ (1.8.9 から) にアップグレードした後、「重複した識別子」に対していくつかのコンパイル エラーが発生し、通常は以前のように機能しません。
- IMyWidget のようなインターフェイスを作成して公開することはできますが、実装が欠落しており、新しいものを作成できません
- mydefinition.d.tsから「declare module...」を削除することはできますが、モジュール ローダーはモジュールを見つけられません (r.js オプティマイザーがそのパスからモジュールに名前を付けるため)。
質問
これを解決するためのクリーンで「安価な」方法はありますか (可能であればコードの重複を避けます)?