知りたいこと
npmなどで取得したモジュールについて、型(interface)情報を自分で上書きする方法を知りたいです(元の型情報のコードを書き変えずに)。
環境
下記具体例の使用している言語、ライブラリ、設定は下記の通りです。
- TypeScript: 2.6.2
- Node.js: 8.1.2
- axios :0.17.1
- tsconfig.json: 設定なし
具体例
axios
のコンフィグオプション(AxiosRequestConfig)でproxy
の値をfalseにすることで「プロクシを利用しない」という設定ができます。しかし、npmで取得するパッケージに付随する型情報(index.d.ts)ではproxy
の型情報はAxiosProxyConfig
であり、booleanは許されていません。そのため、proxy
にfalseを設定するとコンパイルエラーとなります。
mport axios, {AxiosRequestConfig, AxiosProxyConfig} from 'axios'; const config: AxiosRequestConfig = { proxy: false } axios.get('/sample', config); //型が違うのでコンパイルエラー
Qiita記事「TypeScriptのInterfaceとType aliasの比較」では、同名要素のinterface宣言はマージされると説明があったので、下記のようにできるのかと考えたのですが、Import declaration conflicts with local declaration of 'AxiosRequestConfig'.
とのエラーになりました。
import axios, {AxiosRequestConfig, AxiosProxyConfig} from 'axios'; interface AxiosRequestConfig { // 宣言が重複してエラー proxy: AxiosProxyConfig | boolean; } const config: AxiosRequestConfig = { proxy: false } axios.get('/sample', config);
上記の例にて、proxyプロパティにfalseを設定する正当な(//@ts-ignore
などではない)方法を教えてください。
あなたの回答
tips
プレビュー