cari

Rumah  >  Soal Jawab  >  teks badan

Ralat: "Argumen jenis 'rentetan | rentetan' tidak boleh diserahkan kepada hujah jenis 'rentetan'"

<p>Saya sedang membangunkan projek Vue menggunakan kedua-dua TypeScript dan axios untuk membuat panggilan API dan membangunkan komponen tetapan semula kata laluan, fungsi resetPassword dalam fail auth.ts saya kelihatan seperti ini</p> <pre class="brush:php;toolbar:false;">resetPassword(password1: string, password2: string, uid: string, token: string): Janji<mana-mana> kembalikan Janji baharu<sebarang>((selesaikan, tolak) => { aksios .post("API", { password1, password2, uid, token }) .then((res : any) => { selesaikan(//RESOLVE); }) .catch((error) => { //TOLAK }) }) }</pre> <p>Dalam fail ResetPassword.vue saya, saya menggunakan newPassword seperti yang ditunjukkan di bawah</p> <pre class="brush:php;toolbar:false;">this.resetPassword(password1.value, password2.value, this.$route.params.id, this.$route.params.resetID).then( (res) => if(password1.value == password2.value){ Pemberitahuan{ "BERJAYA" }); }</pre> <p>Dalam fail ResetPassword.vue saya, saya mendapat ralat pada parameter ketiga yang mengatakan <strong>"Taip 'rentetan[]' tidak boleh ditugaskan untuk menaip 'rentetan'."</strong></p> ; <p>Saya agak baru mengenali ts dan saya memerlukan bantuan. </p> <p>Saya keliru antara dua penyelesaian di sini, sekiranya saya mempunyai <strong>ini.$route.params.id sebagai rentetan</strong>atau adakah ini lebih baik</ em> kuat>ini.$ Route.params.id.toString()</strong></p>
P粉232409069P粉232409069457 hari yang lalu527

membalas semua(1)saya akan balas

  • P粉322106755

    P粉3221067552023-08-26 10:17:11

    Parameter laluan boleh mengandungi banyak nilai dengan kunci yang sama. Itulah sebabnya ia mungkin susunan rentetan dan bukan rentetan tunggal. Jika anda pasti hanya terdapat satu parameter, anda boleh menggunakan as string 来告诉打字稿编译器你知道这个变量 100% 是一个 string dan bukannya <代码>string[]

    this.resetPassword(password1.value, password2.value, this.$route.params.id as string, this.$route.params.resetID as string)

    Jika anda akan menggunakan hasil .toString() 并且会有一个像 ["foo", "bar"] 这样的数组,您将得到 "foo ,bar" 作为 .toString()

    Jika anda tidak pasti sama ada ia adalah tatasusunan, anda boleh menyemaknya Jika ia adalah tatasusunan, ambil nilai pertama:

    let id: string;
    if (Array.isArray(this.$route.params.id)) {
        id = this.$route.params.id[0];
    } else {
        id = this.$route.params.id;
    }

    balas
    0
  • Batalbalas