TypeScriptでMapped Typesを使ってきれいなインターフェースを作る話