teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

aaa

2022/01/03 04:26

投稿

Hayato1201
Hayato1201

スコア232

title CHANGED
File without changes
body CHANGED
@@ -51,4 +51,4 @@
51
51
  上記のように宣言するという事であっていますでしょうか?
52
52
  こちらのメソッドでは戻り値の型を元々U[]としていましたが、これはtype A|B|C|Dの様なABCDどれかが引数の型Hoge,Huga,Piyoどれかによって返る想定でした。その場合確かにRecord<T, 'desc' | 'asc'>[]とA[],B[],C[],D[]は同義ですがメソッドの返り値を受け取った先でまた以下の様にキャストする必要があるという事にならないないでしょうか?
53
53
 
54
- [Playground](https://www.typescriptlang.org/play?#code/AQFwngDgpsASD2BzGBeYByAhugPugRrugMboBQokMsAropsGugCZFREBm5l0wACgEsw8RhkREAFkQHkK4XgEFRAbwrAA2gGsoYYAIB2cJFAC6AfgBcGZlADOpYDgyZ75AL5yqwAEIq1WnT1DBGRzKxY7BycsVzIPHhgAYT9gDW1dA34heDDrSPRHZ1iPMigADwh4ACcQYGJ4fVta5BAQqAB5fAArKGJatAAeABVgcpAofWZbI2QcWnocQWEAPgAKNQFmKyGAGjVbapA+TBBxqv1wm1dCmNIyAEoLACVe6uZhnbzr6JdSZfUTIxlsBVKkADZQWoSYydHp9NSpaHIWG9foaZQaTYmKwHGrHU5Qc7ANyAlzAF71KrvXZfKJFP4AtRVSE0IlIjrdVFxMhkeqNKHGYAWJRoFptFF9AZtNZYdCfW7oe7AMkKIA)
54
+ [Playground](https://www.typescriptlang.org/play?#code/AQFwngDgpsASD2BzGBeYByAhugPugRrugMboBQokMsAropsGugCZFREBm5l0wACgEsw8RhkREAFkQHkK4XgEFRAbwrAA2gGsoYYAIB2cJFAC6AfgBcGZlADOpYDgyZ75AL5yqwAEIq1WnT1DBGRzKxY7BycsVzIPHhgAYT9gDW1dA34heDDrSPRHZ1iPMigADwh4ACcQYGJ4fVta5BAQqAB5fAArKGJatAAeABVgcpAofWZbI2QcWnocQWEAPgAKNQFmKyGAGjVbapA+TBBxqv1wm1dCmNIyAEoLACVe6uZhnbzr6JdSZfUTIxlsBVKkADZQWoSYydHp9NSpaHIWG9foaZQaTYmKwHGrHU5Qc7ANyAlzAF71KrvXZfKJFP4AtRVSE0IlIjrdVFxMhkeqNKHGYAWBQA0QtNoovoDNprLDoT63dD3YBkkUmIA)

1

aaaa

2022/01/03 04:26

投稿

Hayato1201
Hayato1201

スコア232

title CHANGED
File without changes
body CHANGED
@@ -24,4 +24,31 @@
24
24
  }
25
25
  ```
26
26
  この様にジェネリスクスで型を選べるようにする場合は何かとasによるキャストが多発するのは仕方ない事なのでしょうか?
27
- ロジック一つ切り抜くにしてもこの様に一旦anyに変換してから目的の型にするなどしなくて良い方法などありますか??
27
+ ロジック一つ切り抜くにしてもこの様に一旦anyに変換してから目的の型にするなどしなくて良い方法などありますか??
28
+
29
+
30
+
31
+
32
+
33
+
34
+
35
+
36
+
37
+ --------追記-----------
38
+
39
+ ご回答でご指摘いただいた件で追記させていただきます。
40
+
41
+ 以下について
42
+ >Record<T, 'desc' | 'asc'>[]のようにすればいいかと思います。
43
+
44
+ ```TypeScript
45
+ export const getHogeObject = <T extends Hoge|Huga|Piyo>(
46
+ id: T,
47
+ sortPattern: 'desc' | 'asc'
48
+ ): Record<T, 'desc' | 'asc'>[] => {
49
+ ```
50
+
51
+ 上記のように宣言するという事であっていますでしょうか?
52
+ こちらのメソッドでは戻り値の型を元々U[]としていましたが、これはtype A|B|C|Dの様なABCDどれかが引数の型Hoge,Huga,Piyoどれかによって返る想定でした。その場合確かにRecord<T, 'desc' | 'asc'>[]とA[],B[],C[],D[]は同義ですがメソッドの返り値を受け取った先でまた以下の様にキャストする必要があるという事にならないないでしょうか?
53
+
54
+ [Playground](https://www.typescriptlang.org/play?#code/AQFwngDgpsASD2BzGBeYByAhugPugRrugMboBQokMsAropsGugCZFREBm5l0wACgEsw8RhkREAFkQHkK4XgEFRAbwrAA2gGsoYYAIB2cJFAC6AfgBcGZlADOpYDgyZ75AL5yqwAEIq1WnT1DBGRzKxY7BycsVzIPHhgAYT9gDW1dA34heDDrSPRHZ1iPMigADwh4ACcQYGJ4fVta5BAQqAB5fAArKGJatAAeABVgcpAofWZbI2QcWnocQWEAPgAKNQFmKyGAGjVbapA+TBBxqv1wm1dCmNIyAEoLACVe6uZhnbzr6JdSZfUTIxlsBVKkADZQWoSYydHp9NSpaHIWG9foaZQaTYmKwHGrHU5Qc7ANyAlzAF71KrvXZfKJFP4AtRVSE0IlIjrdVFxMhkeqNKHGYAWJRoFptFF9AZtNZYdCfW7oe7AMkKIA)