tunnel-sshというnpmパッケージを使おうと思いました。
でも型定義ファイルが提供されていませんでした。
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を許容する形で良い気がする。。
おわり
コメント