2022/05/24 09:45
junjun777
typeプロパティを自動追加する糖衣構文が欲しいかな。例はオーバーロードで実装すべきパターンに見えちゃう。「こんにちは!」の方も変えてあれば、型による条件分岐のパターンかな。
2022/05/24 09:51
ooblog
#TypeScript #JavaScript #ECMAscript 「個人ユーザーは「姓」と「名」~法人ユーザーは名前だけ~型による分岐~コンパイルされると、普通のJavaScript~オブジェクト~定義するとき~プロパティとして型名~擬似的に代数的データ型を再現」
2022/05/24 09:54
li1ipqb0ooi1n
アウトプットはすてきなんだけど、これはなんかごくふつうすぎる気がするなあ。PersonalとCorporateのUserで*Nameの扱いが違うのも気になる。将来的にlocaleを入れたときにfamily・givenの返し方も制御できない。ハマりどころでは
2022/05/24 09:54
daruyanagi
毎度思うけど、6歳娘優秀過ぎる ( ˘ω˘ )
2022/05/24 09:55
hazlitt
この形式の元ネタはベイトソンあたりなのかな
2022/05/24 09:58
gowithyou
そもそも引数とかの型による条件分岐は呼び出し側の実装に依存することになるのでよろしくない、というのはOOPではいわれてるけど、TypeScript的にOKなのか?
2022/05/24 09:59
zentarou
"オブジェクト型を定義するときに、プロパティとして型名を持たせておく" は最高にダサいな。コンパイル後にせっかく定義した型情報が消えちゃうのがTypeScriptの欠点だから別でもいいからどこかに残してほしい
2022/05/24 10:10
Mist
一方その頃、俺の6歳息子はSwitch版マイクラでお店を作って遊んでいた。
2022/05/24 10:35
Helfard
出たな6歳娘。
2022/05/24 10:36
kako-jun
めちゃくちゃ面白かった。型を定義するためのtype自身も型なんだし、stringを使うくらいならtype型にしとこうってことね
2022/05/24 11:03
lejay4405
娘ちゃん有能すぎるな
2022/05/24 11:04
perl-o-pal
tsに詳しいjs//その方法じゃ継承出来ないってvbsの時代に学んできたはず…次のネタで使われそうだけど。//pythonは内部的に親クラスを保持してるんたっけか?
2022/05/24 11:06
momonga_dash
TypeScriptの型解析かしこくてすき
2022/05/24 11:06
mayumayu_nimolove
その6歳娘という設定はなんなん?ちゆ2歳みたいな?
2022/05/24 11:22
ka-ka_xyz
(既にブコメあるけど)型で条件分岐してる時点で負け感があるのだけれど、しかしtsの場合だと例外の型ごとのcatch節を書けないのがなあ。classだとinstanceofで判定できるけど、classがthrowされるとは限らない.
2022/05/24 11:45
nmcli
型で条件分岐っていまいちピンとこない。抽象性を欠くコーディングになりそうで。
2022/05/24 11:49
masudatarou
typescriptは無理やけどkotlinはできたな
2022/05/24 11:51
programmablekinoko
面白い。確かにclassを使ったOOP全盛の頃はポリモーフィズムの観点からあまり良くないとされていた気もする
2022/05/24 11:57
mztns
ブルーベリー本を絵本と呼ぶ娘ちゃんつよい
2022/05/24 12:00
key_llow
このシリーズ地味に娘さんちゃんと年齢を重ねて行ってるんだよな…
2022/05/24 12:06
gengesa
すべてがプログラムならポリモーフィズムで云々が通じるけど、JSONやgRPCでデータのやりとりするという実用を考えたらUnion型の出番は少なくないでしょうね
2022/05/24 12:07
akymrk
“type CorporateUser = { + type: "CorporateUser" name: string }”
2022/05/24 12:15
UhoNiceGuy
VScodeの機能凄いな//批判は、型でswitchは代数データ型でMaybeをJust、Nothingで分けるみたいなときは有効だけど、オブジェクト指向ならポリモーフィズムでやれってこと?
2022/05/24 12:18
htnmiki
まず「(ユーザー名)、こんにちは」は意味ないのでやめましょう。
2022/05/24 12:24
otoan52
"娘「switchやろ〜!」"
2022/05/24 12:31
mozukuyummy
メソッドのオーバーロードじゃダメなの? 同名のメソッドを大量に準備するとコピペコードになっちゃうのがあんまりスマートじゃないけど。
2022/05/24 12:33
daishi_n
型分岐よりは属性分岐したいところ。クラスだったら個人、法人を基底クラスの派生クラスにしてようこそメッセージを出力するのもアリだけど実装が手間か。
2022/05/24 12:38
onesplat
うーん苦しい
2022/05/24 12:47
hamati666
このシリーズとても好き 書籍とかあるのだろうか
2022/05/24 12:51
lli
同じ情報が2回入るのがあんまり綺麗じゃないな
2022/05/24 12:55
otchy210
type プロパティを持たすアイディアより、TS の静的解析の強さが印象に残った。すげーな。
2022/05/24 13:26
xjack
if isinstance(6歳娘,RealDaughter): print(f"{6歳娘}すぎょい")\n elif isinstance(6歳娘,ImaginaryDaughter): print("なんだ妄想かよ")
2022/05/24 13:34
KoshianX
ほーん、type ってプロパティ作っておけばそこ見てくれるのか
2022/05/24 13:44
tamtam3
う~~~んアイディアは面白いけれど…/ 便利ねこれ……とばかりに使い倒してたら、ある日バージョンアップすると、セキュリティ絡みで潰されて、利用出来なくなってる類のやつにミーは思える……
2022/05/24 13:56
miki3k
サポートしてない言語で擬似的にやらなくてもいいんじゃないかな
2022/05/24 13:59
tettekete37564
アヒルの様な見た目でアヒルの様に鳴き、名札にアヒルと書いてあるなら、それはもうアヒルと見なす!グワッグワッ / 型で条件分岐は OO じゃないってコメ多いけど原始的な多態性は型の違いや引数の数で実現してるでし
2022/05/24 14:36
lizy
Discriminated unionsですね www.typescriptlang.org
2022/05/24 14:48
yhoriz
タイトルが誤解を招いてるけど、User型を外から拡張できないから呼び出し側への依存は生じないよ 「型安全な直和」「(本文まとめにもある通り)疑似ADT」というべきだけど直和もADTも用語として認知率低いから難しいね
2022/05/24 15:36
Wafer
信じられるか?この子が一時期口もきいてくれへんようになるんやで
2022/05/24 15:44
Windymelt
割とScalaとかだと普通にADTsは型で分岐(というかパターンマッチ)しているので、型による分岐はそんなにおかしなことではないと思う。
2022/05/24 15:50
daichirata
型定義に値を持たせてちゃんと分岐でも静的解析出来るの本当に擬似的な直和って感じだ。多相云々の意見は勘違いしてる気がするけど網羅性の問題はありそう。
2022/05/24 16:14
kenichi_odo
これは便利でよく使ってる
2022/05/24 16:50
xlc
これじゃダメ? github.com / 型による分岐ができないのであれば、静的型付けなんて無用の長物と思うよ。
2022/05/24 17:04
enhanky
型で条件分岐しなければならない時点でOOP的には設計に失敗してない?
2022/05/24 17:43
hylom
RTTIは地獄への入り口
2022/05/24 18:23
ene0kcal
それって"型による条件分岐"ではなくなっているのでは?🤔
2022/05/24 18:24
cl-gaku
“娘「何を言っているの、パパ?」 娘「TypeScriptのswitch文のことだよ?」”
2022/05/24 18:53
santo
大変良い着眼点なんだけど、それtypescriptじゃなくJavaScriptでもできるんだよな…
2022/05/24 19:06
typographicalerror
ブルーベリーの絵本ほしくなってきた
2022/05/24 19:24
ichiken7
型による条件分岐じゃなくて、型自身が振る舞いを持ってるべきなのでは?と思ったりもするけど、そこが言いたい本質じゃなくて、単に例としてしっくりいってないだけなんだろうな。
2022/05/24 19:30
deztecjp
娘さん初登場の頃は当惑していたパパだが、3年経って、すっかり対応にも慣れた様子。成長が著しい。qiita.com
2022/05/24 20:24
bamch0h
どっかのタイミングで娘ちゃんとパパの立ち位置逆転しててほしい
2022/05/24 20:35
hase0510
オーバーロードすべきってブコメあるけどTypeScriptのオーバーロードってつまりこれ(型による条件分岐)じゃないの? ランタイムが動的型付けなんだからコンパイル時に呼ぶ関数を決定することはできないと思うのだけど
2022/05/24 20:42
wonderword22
このサンプルだけで考えるとポリモーフィズムで作るかな。
2022/05/24 21:11
dhrname
データ構造化論>直積型に対するwith構文と、場合分けのためのcase構文とを一緒にした形式のものである。いま、svという直和型の値が、それが起因するところの型に従って、種々の処理(『構造化プログラミング』、1975年)
2022/05/24 21:13
htbman
type の右側と case の右側に型名をハードコードしているように見えるのだけど、これがメンテナブルってことになってんの?
2022/05/24 21:17
a96neko
見てる
2022/05/24 21:33
hdampty7
UserNameTypesというconstを作ってUserNameTypeの値にしてTypeを切って○○UserTypeのtypeプロパティの型にするっていうコード書いてたら、若い人にうざがられた。おじさんはtypoが怖い。
2022/05/24 21:35
roirrawedoc
ポリモーフィズムは…?
2022/05/24 23:01
yo4raw
TSではなくElmを使えという記事か(違う)
2022/05/24 23:55
tanakh
代数データ型のパターンマッチは型による条件分岐じゃなくて値による条件分岐だと思うが・・・(´・_・`)
2022/05/25 01:39
opnihc
型で条件分岐とか通常はやらんけど、VBAで処理に関係ないオブジェクトが選択されている場合があるので初手でSelectionの型で即撥ねするのはよくやる。
2022/05/25 05:20
outalaw
娘ちゃんシリーズ好き。
2022/05/25 06:11
minamishinji
おもしろかったけど、オチがないんだね…
2022/05/25 08:40
masatotoro
“代数的データ型”でswitch文