大規模なサードパーティ製のAPI(名前は無実/無罪を保護するために難読化されています)に呼び出しをラップするTypescriptモジュールがあります。このAPIのTypeScript関数を追加する方法
// MyFile.ApiLib.ts
export module ApiLib {
export function executeAction<TRequest, TResponse>(actionName: string, data: TRequest): Promise<TResponse>{
...
}
}
消費者は、自分の「アクション」を作成することができ、ので、私は彼らが過負荷を作成できるようにしたいと思います:
// MyFile.ApiLib.ts
export module ApiLib {
export interface TheirRequestInterface { ... }
export interface TheirResponseInterface { ... }
export function executeAction<TheirRequestInterface, TheirResponseInterface>(actionName: "TheirActionName", data: TheirRequestInterface): Promise<TheirResponseInterface>;
export function executeAction<TRequest, TResponse>(actionName: string, data: TRequest): Promise<TResponse>{
...
}
}
しかし、明らかに、彼らは変更すべきではありません私のファイル私はその後、タイピングを可能にすること、それらが自分で自分のモジュールを包む見ることができます:
// TheirFile.ApiLib.ts
import { ApiLib } from "MyFile.ApiLib";
export module ApiLibWrapper {
export interface TheirRequestInterface { ... }
export interface TheirResponseInterface { ... }
export function executeAction<TheirRequestInterface, TheirResponseInterface>(actionName: "TheirActionName", data: TheirRequestInterface): Promise<TheirResponseInterface>;
export function executeAction<TRequest, TResponse>(actionName: string, data: TRequest): Promise<TResponse>{
return ApiLib.executeAction<TRequest, TResponse>(actionName, data);
}
}
しかし、これは、ブラウザにダウンロードする必要があり、追加のファイルを意味します。私は彼らが独自の定義を与えるのに "d.ts"ファイルを使うことができると呼んでいましたが、Tsファイルと "d.ts"ファイル、 "d.ts"ファイルの両方を参照しようとすると、 "d.ts"ファイルに定義されているオーバーロード/インタフェースのいずれも持ち込まない:
// TheirFile.ts
/// <reference path="CustomActionDefinitions.d.ts" />
import { ApiLib } from "MyFile.ApiLib";
ApiLib.executeAction(/* no overloads from the "d.ts" file shows up here */);
これは可能ですか?簡単な方法がありますか?
ありますか?これは既存のコードベースですか? –