タグ

2020年9月22日のブックマーク (2件)

  • あなたの知らない連絡先の世界

    「iOSから連絡先をサーバーに同期させたい」 用件を受け、iOSにはContact APIがあるから楽勝でしょ、と思ったあなた。 しかしながら連絡先の構造はそんなに簡単なものではありません。 ミドルネーム?Suffix?振り仮名?旧姓? そんなハマりやすい連絡先処理の説明やVCard変換など、 サーバーのテーブル設計にも役立つiOSのContact APIについてお話しします。 (Androidの連絡先にも若干触れる可能性あり) iOSDC 2020

    あなたの知らない連絡先の世界
    rikuba
    rikuba 2020/09/22
  • bivarianceHack とは何か、なぜ必要なのか

    TypeScript に bivarianceHack と呼ばれるテクニックがある。 これは、関数を意図的に双変(bivariant) にするテクニックだ。著名なところだと React の型定義で使われている type EventHandler<E extends SyntheticEvent<any>> = { bivarianceHack(event: E): void }["bivarianceHack"]; 実は自分はこのテクニックをとあるコードベースで使ったことがあるのだが(そしてそこにはある程度やむを得ない事情があったのだが)、当然初めて見たメンバーにとっては意味がわからない箇所となってしまった。 実際 bivarianceHack が必要になる事情を説明すると結構話が長い上に込み入ってしまうので、この記事でできるだけ噛み砕いてその背景を説明しようと思う。 TL;DR Type

    bivarianceHack とは何か、なぜ必要なのか
    rikuba
    rikuba 2020/09/22
    「共変」「反変」「双変」