質問編集履歴

2

aaa

2022/01/03 04:26

投稿

Hayato1201
Hayato1201

スコア231

test CHANGED
File without changes
test CHANGED
@@ -104,4 +104,4 @@
104
104
 
105
105
 
106
106
 
107
- [Playground](https://www.typescriptlang.org/play?#code/AQFwngDgpsASD2BzGBeYByAhugPugRrugMboBQokMsAropsGugCZFREBm5l0wACgEsw8RhkREAFkQHkK4XgEFRAbwrAA2gGsoYYAIB2cJFAC6AfgBcGZlADOpYDgyZ75AL5yqwAEIq1WnT1DBGRzKxY7BycsVzIPHhgAYT9gDW1dA34heDDrSPRHZ1iPMigADwh4ACcQYGJ4fVta5BAQqAB5fAArKGJatAAeABVgcpAofWZbI2QcWnocQWEAPgAKNQFmKyGAGjVbapA+TBBxqv1wm1dCmNIyAEoLACVe6uZhnbzr6JdSZfUTIxlsBVKkADZQWoSYydHp9NSpaHIWG9foaZQaTYmKwHGrHU5Qc7ANyAlzAF71KrvXZfKJFP4AtRVSE0IlIjrdVFxMhkeqNKHGYAWJRoFptFF9AZtNZYdCfW7oe7AMkKIA)
107
+ [Playground](https://www.typescriptlang.org/play?#code/AQFwngDgpsASD2BzGBeYByAhugPugRrugMboBQokMsAropsGugCZFREBm5l0wACgEsw8RhkREAFkQHkK4XgEFRAbwrAA2gGsoYYAIB2cJFAC6AfgBcGZlADOpYDgyZ75AL5yqwAEIq1WnT1DBGRzKxY7BycsVzIPHhgAYT9gDW1dA34heDDrSPRHZ1iPMigADwh4ACcQYGJ4fVta5BAQqAB5fAArKGJatAAeABVgcpAofWZbI2QcWnocQWEAPgAKNQFmKyGAGjVbapA+TBBxqv1wm1dCmNIyAEoLACVe6uZhnbzr6JdSZfUTIxlsBVKkADZQWoSYydHp9NSpaHIWG9foaZQaTYmKwHGrHU5Qc7ANyAlzAF71KrvXZfKJFP4AtRVSE0IlIjrdVFxMhkeqNKHGYAWBQA0QtNoovoDNprLDoT63dD3YBkkUmIA)

1

aaaa

2022/01/03 04:26

投稿

Hayato1201
Hayato1201

スコア231

test CHANGED
File without changes
test CHANGED
@@ -51,3 +51,57 @@
51
51
  この様にジェネリスクスで型を選べるようにする場合は何かとasによるキャストが多発するのは仕方ない事なのでしょうか?
52
52
 
53
53
  ロジック一つ切り抜くにしてもこの様に一旦anyに変換してから目的の型にするなどしなくて良い方法などありますか??
54
+
55
+
56
+
57
+
58
+
59
+
60
+
61
+
62
+
63
+
64
+
65
+
66
+
67
+
68
+
69
+
70
+
71
+
72
+
73
+ --------追記-----------
74
+
75
+
76
+
77
+ ご回答でご指摘いただいた件で追記させていただきます。
78
+
79
+
80
+
81
+ 以下について
82
+
83
+ >Record<T, 'desc' | 'asc'>[]のようにすればいいかと思います。
84
+
85
+
86
+
87
+ ```TypeScript
88
+
89
+ export const getHogeObject = <T extends Hoge|Huga|Piyo>(
90
+
91
+ id: T,
92
+
93
+ sortPattern: 'desc' | 'asc'
94
+
95
+ ): Record<T, 'desc' | 'asc'>[] => {
96
+
97
+ ```
98
+
99
+
100
+
101
+ 上記のように宣言するという事であっていますでしょうか?
102
+
103
+ こちらのメソッドでは戻り値の型を元々U[]としていましたが、これはtype A|B|C|Dの様なABCDどれかが引数の型Hoge,Huga,Piyoどれかによって返る想定でした。その場合確かにRecord<T, 'desc' | 'asc'>[]とA[],B[],C[],D[]は同義ですがメソッドの返り値を受け取った先でまた以下の様にキャストする必要があるという事にならないないでしょうか?
104
+
105
+
106
+
107
+ [Playground](https://www.typescriptlang.org/play?#code/AQFwngDgpsASD2BzGBeYByAhugPugRrugMboBQokMsAropsGugCZFREBm5l0wACgEsw8RhkREAFkQHkK4XgEFRAbwrAA2gGsoYYAIB2cJFAC6AfgBcGZlADOpYDgyZ75AL5yqwAEIq1WnT1DBGRzKxY7BycsVzIPHhgAYT9gDW1dA34heDDrSPRHZ1iPMigADwh4ACcQYGJ4fVta5BAQqAB5fAArKGJatAAeABVgcpAofWZbI2QcWnocQWEAPgAKNQFmKyGAGjVbapA+TBBxqv1wm1dCmNIyAEoLACVe6uZhnbzr6JdSZfUTIxlsBVKkADZQWoSYydHp9NSpaHIWG9foaZQaTYmKwHGrHU5Qc7ANyAlzAF71KrvXZfKJFP4AtRVSE0IlIjrdVFxMhkeqNKHGYAWJRoFptFF9AZtNZYdCfW7oe7AMkKIA)