Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

Sharing type definitions between TypeScript And...

Sharing type definitions between TypeScript And Dart

Avatar for ikasoumen

ikasoumen

June 18, 2019
Tweet

More Decks by ikasoumen

Other Decks in Programming

Transcript

  1. w JLBTPVNFO w UXJUUFS!@JLBTPVNFO w QJYJWJLB@TPVNFO w HJUIVCJLBTPVNFO w ϐΫγϒ෱ԬΦϑΟε

    w 5ZQF4DSJQU͸"OHVMBS͔Β w ࠷ۙ͸3FBDUͰ΋ԿͰ΋54Ͱॻ͘ w Πϥετ΍ອըΛඳ͘ͷ΋޷͖ ࣗݾ঺հ 2
  2. export type UserDoc = { name: string, role: Roles, /**

    * @TJS-type integer */ createdAt: number, } export enum Roles { guest = "guest", member = "member", admin = "admin", } JOQVU5ZQF4DSJQU
  3. class UserDoc { int createdAt; String name; Roles role; UserDoc({

    this.createdAt, this.name, this.role, }); factory UserDoc.fromJson(Map<String, dynamic> json) => new UserDoc( createdAt: json["createdAt"], name: json["name"], role: rolesValues.map[json["role"]], ); Map<String, dynamic> toJson() => { "createdAt": createdAt, "name": name, "role": rolesValues.reverse[role], }; } PVUQVU%BSU 
  4. enum Roles { ADMIN, GUEST, MEMBER } final rolesValues =

    new EnumValues({ "admin": Roles.ADMIN, "guest": Roles.GUEST, "member": Roles.MEMBER }); class EnumValues<T> { Map<String, T> map; Map<T, String> reverseMap; EnumValues(this.map); Map<T, String> get reverse { if (reverseMap == null) { reverseMap = map.map((k, v) => new MapEntry(v, k)); } return reverseMap; } } PVUQVU%BSU