Heim  >  Fragen und Antworten  >  Hauptteil

Fehler: „Argument vom Typ ‚string | string‘ kann nicht dem Argument vom Typ ‚string‘ zugewiesen werden“

<p>Ich entwickle ein Vue-Projekt, das sowohl TypeScript als auch Axios verwendet, um API-Aufrufe durchzuführen und eine Komponente zum Zurücksetzen des Passworts zu entwickeln. Die Funktion „resetPassword“ in meiner auth.ts-Datei sieht so aus</p> <pre class="brush:php;toolbar:false;">resetPassword(passwort1: string, passwort2: string, uid: string, token: string): Promise<any> neues Versprechen zurückgeben<beliebig>((auflösen, ablehnen) => { Axios .post("API", { Passwort1, Passwort2, UID, Token }) .then((res : any) => { auflösen(//AUFLÖSEN); }) .catch((error) => { //ABLEHNEN }) }) }</pre> <p>In meiner ResetPassword.vue-Datei verwende ich newPassword wie folgt</p> <pre class="brush:php;toolbar:false;">this.resetPassword(password1.value, passwort2.value, this.$route.params.id, this.$route.params.resetID).then( (res) => if(passwort1.wert == passwort2.wert){ Benachrichtigung{ „Erfolg“ }); }</pre> <p>In meiner ResetPassword.vue-Datei erhalte ich beim dritten Parameter eine Fehlermeldung mit der Meldung <strong>„Typ 'string[]' kann nicht dem Typ 'string' zugewiesen werden.“</strong></p> ; <p>Ich bin ein bisschen neu in Sachen Ts und brauche etwas Hilfe. </p> <p>Ich bin zwischen den beiden Lösungen verwirrt, sollte ich <strong>this.$route.params.id als String</strong>oder ist das besser</ em>? strong>this.$ Route.params.id.toString()</strong></p>
P粉232409069P粉232409069420 Tage vor485

Antworte allen(1)Ich werde antworten

  • P粉322106755

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

    路由参数可以包含许多具有相同键的值。这就是为什么它可能是字符串数组而不是单个字符串。如果你确定只有一个参数,你可以使用 as string 来告诉打字稿编译器你知道这个变量 100% 是一个 string 而不是 <代码>字符串[]

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

    如果您将使用 .toString() 并且会有一个像 ["foo", "bar"] 这样的数组,您将得到 "foo ,bar" 作为 .toString()

    的结果

    如果不确定是否是数组,可以检查一下,如果是数组则取第一个值:

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

    Antwort
    0
  • StornierenAntwort