Maison  >  Questions et réponses  >  le corps du texte

Erreur : « L’argument de type « chaîne | chaîne » n’est pas attribuable à l’argument de type « chaîne » »

<p>Je développe un projet Vue utilisant à la fois TypeScript et axios pour effectuer des appels d'API et développer un composant de réinitialisation de mot de passe, la fonction resetPassword dans mon fichier auth.ts ressemble à ceci</p> <pre class="brush:php;toolbar:false;">resetPassword(mot de passe1 : chaîne, mot de passe2 : chaîne, uid : chaîne, jeton : chaîne) : Promise<any> renvoyer une nouvelle promesse<any>((résoudre, rejeter) => { axios .post("API", { mot de passe1, mot de passe2, uid, jeton }) .then((res : any) => { résoudre(//RESOLU); }) .catch((erreur) => { //REJETER }) }) }</pré> <p>Dans mon fichier ResetPassword.vue, j'utilise newPassword comme ceci</p> <pre class="brush:php;toolbar:false;">this.resetPassword(password1.value, password2.value, this.$route.params.id, this.$route.params.resetID).then( (rés) => si (mot de passe1.value == mot de passe2.value){ Notification{ "SUCCÈS" }); }</pré> <p>Dans mon fichier ResetPassword.vue, j'obtiens une erreur sur le troisième paramètre disant <strong>"Le type 'string[]' n'est pas attribuable au type 'string'."</strong></p> ; <p>Je suis un peu nouveau sur ts et j'ai besoin d'aide. </p> <p>Je suis confus entre les deux solutions ici, devrais-je avoir <strong>this.$route.params.id comme chaîne</strong> strong>this.$ Route.params.id.toString()</strong></p>
P粉232409069P粉232409069420 Il y a quelques jours484

répondre à tous(1)je répondrai

  • P粉322106755

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

    Les paramètres d'itinéraire peuvent contenir plusieurs valeurs avec la même clé. C'est pourquoi il s'agit probablement d'un tableau de chaînes et non d'une seule chaîne. Si vous êtes sûr qu'il n'y a qu'un seul paramètre, vous pouvez utiliser as string 来告诉打字稿编译器你知道这个变量 100% 是一个 string au lieu de <代码>string[]

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

    Si vous utilisez le résultat de .toString() 并且会有一个像 ["foo", "bar"] 这样的数组,您将得到 "foo ,bar" 作为 .toString()

    Si vous n'êtes pas sûr qu'il s'agisse d'un tableau, vous pouvez le vérifier. S'il s'agit d'un tableau, prenez la première valeur :

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

    répondre
    0
  • Annulerrépondre