tunnel-sshというnpmパッケージを使おうと思いました。
でも型定義ファイルが提供されていませんでした。

▲型定義が提供されていない場合、strict:trueの場合(もっと具体的にいうとnoImplicitAny:trueの場合)に以下のようにエラーが出てしまう。
DefinitelyTypedで型定義ファイルは公開はされていたのですが、最新バージョンに対応したものではなかったみたいで、使えませんでした。
なので自分で追加することにしました。
@types/tunnel-ssh/index.d.ts を作って、以下のような型定義を追加。
import { Server, ListenOptions } from "net";
import { Client, ConnectConfig } from "ssh2";
declare module "tunnel-ssh" {
interface TunnelOptions {
autoClose: boolean;
}
interface ForwardOptions {
srcAddr: string;
srcPort: number;
dstAddr: string;
dstPort: number;
}
function createTunnel(
tunnelOptions: TunnelOptions,
serverOptions: ListenOptions,
sshOptions: ConnectConfig,
forwardOptions: ForwardOptions
): Promise<[Server, Client]>;
}
tsconfig.jsonに以下の内容を追加。
"baseUrl": ".",
"paths": {
"*": ["./@types/*"]
}
これで無事に補完が効くようになりました。
ちなみに@types/tunnel-ssh/index.d.tsじゃなくて、
- tunnel-ssh.d.tsというファイル名にする
- トップディレクトリに配置する
という風にすると、tsconfig.jsonを変更せずとも補完を効かすことができました。
というか正直、この程度のかんたんなパッケージなら//ts-ignoreで部分的にanyを許容する形で良い気がする。。
おわり
コメント