エラー: 「タイプ 'string | string' の引数は、タイプ 'string' の引数に割り当てることができません」
P粉232409069
2023-08-25 11:44:28
<p>TypeScript と axios の両方を使用して API 呼び出しを行い、パスワード リセット コンポーネントを開発する Vue プロジェクトを開発しています。auth.ts ファイル内のresetPassword 関数は次のようになります</p>
<pre class="brush:php;toolbar:false;">resetPassword(パスワード 1: 文字列、パスワード 2: 文字列、uid: 文字列、トークン: 文字列): Promise<any> {
return new Promise<any>((解決、拒否) => {
アクシオス
.post("API", { パスワード 1, パスワード 2, uid, トークン })
.then((res : any) => {
解決(//解決);
})
.catch((エラー) => {
//拒否する
})
})
}</pre>
<p>ResetPassword.vue ファイルでは、次のように newPassword を使用します</p>
<pre class="brush:php;toolbar:false;">this.resetPassword(password1.value、password2.value、this.$route.params.id、this.$route.params.resetID).then(
(レス) => {
if(パスワード1.値 == パスワード2.値){
通知{
「成功」
});
}</pre>
<p>ResetPassword.vue ファイルの 3 番目のパラメータで、<strong>「型 'string[]' は型 'string' に割り当てられません。」というエラーが表示されます。</strong></p> ;
<p>私は TS について少し初心者なので、助けが必要です。 </p>
<p>ここで 2 つの解決策の間で迷っています。<strong>this.$route.params.id を文字列として使用する必要があります</strong> <em>それともこれの方が良いですか</ em> < Strong>this.$ Route.params.id.toString()</strong></p>
Route パラメーターには、同じキーを持つ多くの値を含めることができます。そのため、これはおそらく単一の文字列ではなく、文字列の配列であると考えられます。パラメーターが 1 つだけであることが確実な場合は、
リーリーas string
を使用して、この変数がstring
であり string ではないことを 100% 知っていることを typescript コンパイラーに伝えることができます。 []代码>
それが配列であるかどうかわからない場合は、それを確認できます。配列の場合は、最初の値を取得します:.toString()
を使用し、["foo", "bar"]
のような配列を使用すると、"foo , bar"# が得られます。
##.toString()の結果
リーリー