0
あなたは、このような判別式として列挙型で判別共用体を使用することができますtypescriptです2.0のとおり:慣用的な活字体のEnum識別型連合
- 活字体2.3のよう
export function getInstance(code: Enum.Type1, someParam: OtherType1): MyReturnType1; export function getInstance(code: Enum.Type2, someParam: OtherType2): MyReturnType2; export function getInstance(code: Enum, someParam: UnionOfOtherTypes): UnionOfReturnTypes { switch (code) { case Enum.Type1: return new ReturnType1(someParam as OtherType1); case Enum.Type2: return new ReturnType2(someParam as OtherType2); } }
これは慣用的な方法です。これをする?
- キャストせずにsomeParamのタイプを推論できますか?
- タイプ定義を簡略化できますか?おそらくジェネリックを使用したり、関数のパラメータを変更したりできますか?最終関数を定義するだけです。
const getInstance =() => {};
いつもあなたの本を読んだ:)ありがとう!差別化された組合の戻り値の型をパラメータに基づいて推論することは可能ですか?つまり、コードがタイプAの場合、返されるタイプはタイプBになります。 – chris
はい。戻り値の型に対する共用体のすべての文を戻します。例えばあなたのコードの異なるセクションで 'string'と' number'を返すと、戻り値の型は 'string |数字 – basarat