Upgrade to Pro — share decks privately, control downloads, hide ads and more …

集合で理解する Typescript

集合で理解する Typescript

Jeongmin LEE

June 01, 2024
Tweet

More Decks by Jeongmin LEE

Other Decks in Programming

Transcript

  1. CONTENTS 1. 型は値の集合 2. 和集合と共通部分 3. never, unknown, any 4.

    オブジェクトの共通部分 5. オブジェクトの和集合 6. まとめ
  2. 補足2) any と unknown って具体的にどう違う? any: 何でもありなんで型チェックなんか要らん unknown: 何の型が来るかわからんから、ちゃんと型確認しろよ 型チェックを放棄

    型が分からないので、string 型にだけ 存在するメソッドを使ったらエラー発生 型ガードで型を絞ったらエラー解消
  3. Javascript は Duck Typing に基づいてる In computer programming, duck typing

    is an application of the duck test —"If it walks like a duck and it quacks like a duck, then it must be a duck"— to determine whether an object can be used for a particular purpose. コンピュータ・プログラミングでは、Duck Typing はダック・テストの応用である。 「アヒルのように歩き、アヒルのように鳴くなら、それはアヒルに違いない」 あるオブジェクトが特定の目的に使用できるかどうかを判断する。 Duck Typing とは
  4. One of TypeScript’s core principles is that type checking focuses

    on the shape that values have. This is sometimes called “duck typing” or “structural typing”. In a structural type system, if two objects have the same shape, they are considered to be of the same type. Typescript における Duck Typing
  5. name: string プロパティを もつ(すべての)オブジェクト birth: Date、 death?: Date プロパティをもつ (すべての)オブジェクト

    name: string、birth: Date、 death?: Date のプロパティをもつ(すべての)オブジェクト
  6. 判別可能なユニオン型のほうが便利 このスコープの product は OrderMade 型になる このスコープの product は ReadyMade

    型になる *型を識別するためのプロパティを持つ オブジェクトのユニオンを Discriminated Union、 または Tagged Union という
  7. - 「型」は割り当てられる値の集合でる - Union は和集合、Intersection は共通部分を表現する - never は空集合 -

    unknown はすべての集合の上位集合 (1番大きい集合) - any はすべての集合の上位集合であり、never 以外のすべての型の部分集合でもある - Javascript は Duck Typing に基づいてるので、オブジェクトの Intersection はプロパティが増える - オブジェクトの Union では識別可能なユニオンが便利 - any 使わないでお願い
  8. - Dan Vanderkam, 『Effective TypeScript』, O'Reilly, 2021 - typescript, 「Structural

    Type System」, https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html#structural-ty pe-system (2024.05.19) - wikipedia, 「Duck typing」, https://en.wikipedia.org/wiki/Duck_typing, (2024.05.19) - wikipedia, 「集合」,https://ja.wikipedia.org/wiki/%E9%9B%86%E5%90%88, (2024.05.19) - zhenghao.io, 「typescript never」, https://www.zhenghao.io/posts/ts-never (2024.06.01) - typescriptbook, 「判別可能なユニオン型」, https://typescriptbook.jp/reference/values-types-variables/discriminated-union (2024.06.01) 参考資料