Wie kann ein Typoskriptfehler behoben werden, wenn der Status in React auf den vorherigen Status gesetzt wird?
P粉520545753
P粉520545753 2024-02-03 22:41:43
0
1
420

Ich habe diesen Status definiert

const [userInfo, setUserInfo] = React.useState<UserInfo | undefined>()

Irgendwo in meinem useEffect versuche ich es basierend auf dem vorherigen Zustand festzulegen.

Also mach das

setUserInfo(
                          (prevState) => {
                          return {
                              ...prevState,
                              ...someRef.current
                          }
                      })

Aber es schlägt mit dem folgenden Fehler fehl

Type error: Argument of type '(prevState: any) => any' is not assignable to parameter of type 'UserInfo'.
  Type '(prevState: any) => any' is missing the following properties from type 'UserInfo': name, age, gender

Was noch seltsamer ist, ist, dass ich den Code aktualisiert habe, um zum vorherigen Zustand zurückzukehren. Im Grunde ist es das

setUserInfo((prevState) => return prevState)

Dieser Vorgang schlägt mit demselben Fehler fehl!

Type error: Argument of type '(prevState: any) => any' is not assignable to parameter of type 'UserInfo'.
  Type '(prevState: any) => any' is missing the following properties from type 'UserInfo': name, age, gender

Ich glaube ehrlich gesagt, dass das funktionieren wird. Ich erhalte den vorherigen Status und gebe ihn zurück, aber das wird nicht kompiliert.

Wenn ich die Prüfung deaktiviere und die App ausführe, funktioniert sie wie erwartet, es sieht also nach einem Typoskript-Problem aus.

Irgendwelche Ideen, wie man dieses Problem lösen kann?

P粉520545753
P粉520545753

Antworte allen(1)
P粉770375450

您可以将返回值转换为 UserInfo。

setUserInfo(
  (prevState) => {
    return {
      ...prevState,
      ...someRef.current
    } as UserInfo;
  }
);
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage