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

一か月半かけて、TypeScript本を写経した話

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for ツノ ツノ
November 15, 2022

 一か月半かけて、TypeScript本を写経した話

Avatar for ツノ

ツノ

November 15, 2022
Tweet

More Decks by ツノ

Other Decks in Programming

Transcript

  1. 写経達成! 成果 ① 内容 ① 成果 ② 内容 ② 期間

    9/28 ~ コミット 245 コミット ページ数 375 ページ ステップ数 1994 行 今年のコミット履歴
  2. 学んだこと例1-1 JavaScript の知識を学習(復習)することができた 分割代入(パターン = 式) ⇒ 実装できるレベルまで理解することができた const {

    foo, bar } = obj; // objのプロパティを変数に const { num, obj: { bar }, } = obj; // objのプロパティがネストしていても分割代入可能 const arr = [1, 2, 3]; const { first, second, third } = arr; // 配列を変数に
  3. 学んだこと例1-2 非同期処理 ⇒Promise 文がスラスラ読めるようになった (前までは Promise チェーンへの理解が浅かった) const p =

    readFile("foo.txt", "utf-8") .then(() => sleepReject(1000)) .then( (result) => { console.log("OK"); }, (error) => { console.log("E",error); );
  4. 学んだこと例3-1 TypeScript の便利な機能を学ぶことができた 関数型の部分型関係 ⇒ 型安全かつ、自由度の高い設計が可能になる type HasNameAndAge = {

    name: string; age: number; }; // S type HasName = { name: string; }; // T const fromAge = (): HasNameAndAge => ({ name: "John", age }); // 戻り値:S const f: () => HasName = fromAge; //SはTの部分型のため、戻り値TをSとみなせる
  5. 学んだこと例3-2 ジェネリクスと型引数 ⇒ 汎用性の高い関数が作成可能になる const generics = () => {

    function repeat<T>(element: T, length: number): T[] { const result: T[] = []; for (let i = 0; i < length; i++) { result.push(element); } return result; } console.log(repeat<string>("a", 5)); // 文字列型でも使用可能 console.log(repeat<number>(0, 5)); // 数値型でも使用可能 };
  6. EOL