タイプスクリプト内の同じ関数の異なる戻り値の型
7108 ワード
オーバーロード関数
異なる引数や引数型を受け入れる関数があるという考えです.そして、あなたが通過するどんな議論に基づいて、あなたは異なった戻りタイプを持つことができます.
例
これはすべてのものとしていくつかの方法で使用することができます、しかし、我々はそれを単純にします.そして、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を得るとき、機能詳細を読む必要がないことによって.
によるカバー写真
Reference
この問題について(タイプスクリプト内の同じ関数の異なる戻り値の型), 我々は、より多くの情報をここで見つけました https://dev.to/stroemdev/different-return-types-for-same-function-in-typescript-f88テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol