タイプスクリプト内の同じ関数の異なる戻り値の型



オーバーロード関数
異なる引数や引数型を受け入れる関数があるという考えです.そして、あなたが通過するどんな議論に基づいて、あなたは異なった戻りタイプを持つことができます.


これはすべてのものとしていくつかの方法で使用することができます、しかし、我々はそれを単純にします.そして、1つのそれらの迷惑なものを取り除くのは、スクリプトの理解を理解する.この関数を見てください.
function greet(user:IUser | undefined):string | undefined {
  if(!user) return undefined;
  return `Hello ${user.firstName} ${user.lastName}!`
}
我々は、ユーザーが定義されるとき、我々がストリングを得るということを確かに知っています.タイプスクリプトを教えてください.短い答えはイエスです!

そしてここに
として、我々は機能をオーバーロードし、more info here in the docsを見つけることができます.
少なくとも私の意見では、構文は少し奇妙に見えるかもしれません.しかし、私たちは、私たちが関数を呼ぶことができるすべての異なった方法をタイプすることができます、そして、戻りタイプはそれらに関連しています.このように:
function greet(user: IUser):string
function greet(user: IUser | undefined):string | undefined
これは実際の実装の前に追加された関数の“オーバーロード”です.この関数は次のようになります.
function greet(user: IUser):string
function greet(user: IUser | undefined):string | undefined
function greet(user: IUser | undefined):string | undefined {
  if(!user) return undefined;
  return `Hello ${user.firstName} ${user.lastName}!`
}
または、anyで実際の関数を入力するだけでもいいです.
function greet(user: IUser):string
function greet(user: IUser | undefined):string | undefined
function greet(user: any):any {
  if(!user) return undefined;
  return `Hello ${user.firstName} ${user.lastName}!`
}
今すぐTypeScriptは、我々がユーザーを持っているとき、我々は文字列を取得し、我々はユーザーを持っている可能性があることに気づいています.よく、我々はストリングを得るかもしれません.
そして、あなたがanyの方法実装に従うならば、あなたはまだany議論で機能を呼ぶことができません.それはIUserまたはundefinedである必要があります.
You can check the example here

概要
はい、この例は少し簡単です.しかし、私たちが機能を呼ぶとき、私たちがundefinedのためにチェックする必要があるとき、そして、我々がスキップすることができるとき、我々が理解されることができるという考えです.
それはあなたの同僚、または将来のあなたのためのコードを簡単にアプローチする.“現実の生活”の機能は、おそらくより複雑であり、さまざまなオプションの戻り値の種類を与えることによって、生命は誰にとっても容易になります.タイプXを得るとき、そして、我々がタイプYを得るとき、機能詳細を読む必要がないことによって.
によるカバー写真