私は今日もこの同じ問題で苦労しましたが、私はそれを得ました。
@ types/webdriverioを使用していると仮定して、カスタムコマンドの宣言でWebdriverIO.Clientインターフェイスを拡張する必要があります。可能であれば、カスタムコマンドが.tsファイルで定義されていることを確認してください。
declare namespace WebdriverIO {
interface Client<T> {
doCustomThing(): void;
}
}
:カスタムコマンドはtypescriptです実装を取得できない場合、あなたはまだ、このようになります.d.tsファイルにそれらを別々に宣言することができ
declare global {
namespace WebdriverIO {
interface Client<T> {
doCustomThing: typeof doCustomThing;
}
}
}
function doCustomThing() {
console.log("test");
}
//both of these should now work
browser.addCommand('doCustomThing' , doCustomThing)
browser.doCustomThing();
:次に、あなたはこのような何かを行うことができます
しかし、別々のファイルで別々の宣言と実装を維持し、それらが同期していることを確認する必要があります。私はあなたが選択肢がない限り、そのルートを実行するつもりはありませんが、プレーンJSで実装を維持する。
これは、Typescript 2.6.1、webdriverio 4.9.10、および@ types/webdriverio 4.8.6を使用して正常にテストされました。
注:最初の例では、グローバルスコープ内のWebdriverIO名前空間の定義を変更するように指定する必要がありますが、2番目の方法では暗黙的にグローバルスコープで作業しています。これは、最初のモジュールはモジュール内にあり、2番目のモジュールはモジュールではないため、何もインポートまたはエクスポートしないためです。詳細は、https://www.typescriptlang.org/docs/handbook/modules.htmlを参照してください。