Erreur : « L'argument de type « chaîne | chaîne » n'est pas attribuable à l'argument de type « chaîne » »
P粉232409069
P粉232409069 2023-08-25 11:44:28
0
1
520
<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粉232409069
P粉232409069

répondre à tous(1)
P粉322106755

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;
}
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal