variant / enum / flags 命名は kebab-case → camelCase に自動変換。variant は switch (x.tag) で網 羅性検査が効く、flags は全て optionalなので !flags.admin 判定は要注意。 WIT 型 TS 型 備考 record { f-name: T } { fName: T } kebab → camel 自動変換 enum { a, b, c } 'a' | 'b' | 'c' string literal union variant { x(T), y, ... } { tag, val? } の union 判別共用体 flags { a, b, c } { a?, b?, c? } 全 field が optional guest.d.ts (jco transpile) // record { user-id: u32, full-name: string } type UserProfile = { userId: number; fullName: string }; // camelC // variant { ok(string), pending, fail(error-kind) } type Status = | { tag: 'ok', val: string } | { tag: 'pending' } | { tag: 'fail', val: ErrorKind }; // flags { read, write, admin } — 全部 optional type Permissions = { read?: boolean; write?: boolean; admin?: bo 永野 峻輔 / @glassmonkey / #tskaigi_leverages 35 / 46