Open5
【Udemy】『リバーシで学ぶアプリケーション設計入門〜仕様の整理からTypeScriptでの実装まで〜』やってみた
はじめに
「TypeScriptをちゃんと理解したい 」×「 設計をちゃんと学びたい」ということで『リバーシで学ぶアプリケーション設計入門〜仕様の整理からTypeScriptでの実装まで〜』を購入してみました。正社員になったので書籍代で購入しています。書籍代は神。
ハンズオンしながら、分からなかったことや重要なことなどをメモしていきます。
TypeScriptのセットアップ
M1 Macでコマンドを実行したところ、下記エラーが出ました。
$ brew install gpg gawk
Error: Cannot install under Rosetta 2 in ARM default prefix (/opt/homebrew)!
To rerun under ARM use:
arch -arm64 brew install ...
To install under x86_64, install Homebrew into /usr/local.
Rosettaで実行(?)しましたがその後asdf
がないと怒られてしまい、結果的に以下のスクリプトで動きました。
$ arch -arm64 brew install gpg gawk # 必要ないかも
$ arch -arm64 brew install asdf
$ asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
TypeScript超入門
TypeScriptは少しだけ触ったことがあるので、基本的な部分はスルーします。
クラス
プライベートなフィールド(クラス内変数)は使ったことがありませんでした。
class Dog {
private _name: string // プライベートフィールド
constructor(name: string) {
this._name = name
}
// ゲッター
get name() {
return this._name
}
}
コンストラクタには省略記法があります。省略記法はprivate変数でないと使えません(たぶん)。
- private _name: string // プライベートフィールド
-
- constructor(name: string) {
- this._nane = name
- }
+ constructor(private _name: string) {}
インターフェース
クラス自体の型のような認識。
クラスがどのようなフィールド・メソッドを持っているか、あらかじめ定義しておきます。
// インターフェース
interface Animal {
name: string // nameフィールド
eats(food: string): void // eatsメソッド
}
// インターフェースを実装したクラス
class Cat implements Animal {
constructor(private _name: string) {}
get name() {
return this._name
}
eats(food: string) {
console.log(`${this.name} eats ${food}.`)
}
}
// インターフェースを実装したクラスを受け取る関数
function eats(animal: Animal) {
animal.eats('churu')
}
const cat = new Cat('Tama')
eats(cat) // Tama eats churu.
Dog
クラスとCat
クラスがあったとして、Animal
インターフェースを実装していればどちらもeats()
に渡せます。
関数・コールバックと async/await を用いた非同期処理
関数の引数として渡す関数をコールバック関数と呼ぶ。
// 文字列とコールバック関数を受け取る関数
function wrapper(text: string, callback: (text: string) => void): void {
callback(text)
}
// コールバック関数としてconsole.logを渡す
wrapper('text', console.log) // text
以下のように、Array.map()
に渡すアロー関数もコールバック関数の1つ。
const numbers = [1, 2, 3]
numbers.map((number: number) => number *2) // (...) => number * 2がコールバック関数