回答編集履歴

2

追記を見やすくするため修正

2023/02/27 02:17

投稿

uky
uky

スコア207

test CHANGED
@@ -11,6 +11,8 @@
11
11
  console.log(newValue)
12
12
  })
13
13
  ```
14
+
15
+ ### 2023/02/27 追記
14
16
 
15
17
  以下の回答コメントに対する回答
16
18
  > newValueに型をつけることは一般的ではない?対応してない?のでしょうか?

1

回答コメントに対してソースコードを記載するため追記

2023/02/27 02:16

投稿

uky
uky

スコア207

test CHANGED
@@ -11,3 +11,24 @@
11
11
  console.log(newValue)
12
12
  })
13
13
  ```
14
+
15
+ 以下の回答コメントに対する回答
16
+ > newValueに型をつけることは一般的ではない?対応してない?のでしょうか?
17
+
18
+ 個人的には不要と思っています。
19
+
20
+ newValueがとりうる値は、Recoilの仕様上`string | DefaultValue`となりますが、
21
+ `DefaultValue`は要は`string`になります。(atomのdefaultで指定するようなものです
22
+
23
+ ということは、以下のように型を明示してあげることで、わざわざselectorのset内で型を指定する必要がなくなると思います。
24
+ ※ tsで書きます
25
+
26
+ ``` ts
27
+ const testSelector = selector<string>({
28
+ key: 'testSelector',
29
+ get: ({get}) => {
30
+ return 'string'
31
+ },
32
+ set: ({set}, newValue) => console.log(newValue) // selectorの関数自体にstringの型制約をつけたのでここで明示する必要がなくなる
33
+ })
34
+ ```