Überprüfung des Nullwerttyps
P粉896751037
P粉896751037 2023-08-03 11:34:29
0
1
452
<p>Ich habe gerade eine Methode in einem Dienst geschrieben, aber ich stoße auf ein Problem, bei dem der Typ darauf hinweist, dass ich möglicherweise einen Nullwert zurückgebe, obwohl ich im if-Anweisungsblock eine Nullprüfung durchgeführt habe. </p> <pre class="brush:php;toolbar:false;">public async getUserById(id: string): Promise<UserEntity> const user = this.userRepository.getById(id); // gibt <UserEntity | zurück. if (!user) { // auf Null prüfen throw new NotFoundUser(`Nicht gefundener Benutzer`); } // Typ „UserEntity |. null“ kann nicht dem Typ „UserEntity“ zugewiesen werden. // Typ „null“ kann nicht dem Typ „UserEntity“ zugewiesen werden. Benutzer zurückgeben; }</pre> <p>Ich möchte eine Ausnahme auslösen, wenn die Benutzervariable leer ist, und andernfalls die UserEntity zurückgeben. <br /><br />Wenn ich dort zwei Ausrufezeichen setze, ist das Problem gelöst. </p><p><br /></p> <pre class="brush:php;toolbar:false;">if (!!user) { // auf Null prüfen throw new NotFoundUser(`Nicht gefundener Benutzer`); }</pre> <p>Aber wenn ich !!null in die Konsole eingebe, wird false zurückgegeben, sodass ich in diesem Fall nie in eine Situation komme, in der eine Ausnahme ausgelöst wird. Warum tritt dieses Verhalten auf? </p>
P粉896751037
P粉896751037

Antworte allen(1)
P粉267791326

因为 !! 类似于 Boolean,所以在这行代码中,你做了类似于 Boolean(null) 的操作,所以你会得到 false,因为在布尔值中,null 是 false。你可以使用 user === null 来检查是否为 null。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!