はーあずにゃん
@sota_n @d_flat_aug7 JSのいわゆる普通のclassではなくてplain objectを型安全に使うアプローチだけど、こういうのはできます。Tagged Unionsと呼ばれるテク https://www.typescriptlang.org/play?ssl=1&ssc=1&pln=30&pc=4#code/C4TwDgpgBAglC8UDeAoK6rAIYHMBcUA5DIQDRoZYD6AblgDYCuEBAdowLYBGEATigF8UKUJCgAhBMgrps+IuLIyoXWg2ZtOPfkJHhoAFQAWAS1Y4pcAD4ThAYwD2rAM7BMp884LGzOANoAulJ+ykiYuATEZFDUdEwsUADMAJwpUALkGMjh8oSKpCpq8QQATACs5SXpKAEA3MLAHjjOAHQAZg68AKJYdkYAFP00AJQIAHzSWY4uDvQQLfQOOEMtcsP1WQD0m1DTzrPzi8s0LbHqEOtQ21AAPAC0UF28vJ0EAAovkLygRGfxhFAACYOCDOKCsBxuCAADxMrigTkw+iIPnMhBaUA+Di+P0If2YAOBoPBkKgMLhbkRomgeXRwiyzgA7iZgH0oCs1pMshg7FhnDSSHhlNyeU59nMFksVviLhsRdyuLwIFgANZykW8-kKQhC+XcvYHSXHFqqOLMdbC+WK5Vq5RCATrIA
@d_flat_aug7 @sota_n まあnew A();って書く代わりにtag: 'A'って書いてると思えばほぼ同じという説はある。このタイプの型推論はリテラル型というかstructual typingの強みですね
最近のJavaScript界隈、昔ながらのnominal typingとTSとかのstructual typingがごちゃまぜになっててどっちに進みたいのかよくわからん
ちゃんとtype narrowingする機構さえあれば、switch-caseでパターンマッチっぽく書けるかは型安全性に寄与しないので完全に好みの問題という認識
「パターンマッチ」と言ったときに本当に構造に対するパターンマッチを求めているのか、単にswitch文っぽくtype narrowingできる構文の意味で言っているのか、それとも型推論関係なくdestructive assignmentの事を言っているのかが人によって違うっぽい問題