2024/10/31
考えたことを文章化する重要性
なぜ文章化することが重要なのか?
それは考えることは言葉を用いてしかできないから。
概念を言葉にしていく作業こそが、考えることの第一歩である。
その基礎があってこそ次の段階がある。
成長の段階として2段階ある気がしている。
様々な物事に対してしっかりと考える習慣を持つこと。
第二段階として、戦略的に物事を考えること。
その考えるという行為を習慣化するためには、考えたことを文章化することが非常に重要。
自分の中にある全く関係のない事柄と繋げる。
毎日文章を作成する習慣を持つことで、自分の思考の振り返りができるし、そもそもまず考える時間を作ることができる。 忙しい中で、いかに考える時間を持てるかが 自分の行動に対するアクションの強さにつながる。
行動のためには、思考が必要で思考の質を担保するためには、量が必要。
Typescript
型ガードとは
特定のブロック内でオブジェクトが特定の型であることを制限することができる。
静的に型の絞り込みができる
実行前にエラーに気づくことができる
parseInt()
整数を引数に渡すと整数を返す
typeof
実際の値を方に変換する
変数に対して、使用する
const someObj = {
foo: ''
}
const obj1: typeof someObj = { fo: ''} // error
const obj2: typeof someObj = { foo: ''} // not error
obj2.foo = 1 // error
// 初期値を入れない場合
const obj!: typeof someObj;
jsのtypeof演算子とは別
宣言済みの変数の型を取得できる
このように配列の値をString Literal Typesとして利用する
const size = ['small', 'medium', 'large'] as const;
// readonly ["small", "medium", "large"]
type Size = typeof size[number];
// 'small' | 'medium' | 'large'
keyof
オブジェクトのプロパティ名を出力する
型に対して使用する
type SomeType = {
foo: string;
bar: string;
baz: number;
}
const someKey: keyof SomeType; // someKey: 'foo' | 'bar' | 'baz'
if文or tostring()
const id = unknown
void push(pagesPath._id(id?.toString() ?? '').$url());
vs
if (typeof id === 'string') {
void push(pagesPath._id(id).$url());
}
どちらが優れているだろうか?目的もし何stringじゃない場合の挙動の違い。つまり、目的によるのではないか?
空文字でURLを許容するかどうかが焦点か。
しないなら二つ目の方が良い。
許容しないため、二つ目のアプローチに修正する。
要件を満たしているか否かの判断
ある目的を達成するために、何をどの程度まで実施すればいいか。
程度問題がある。足りないとだめだし、多すぎると無駄になる。そのいい塩梅をいかに自分の中に見つけるか。
いい塩梅とは?
明文化した目的に対して十分に実施することが要件を満たしていること。
いい塩梅に対して具体的に方針を立ててみる
まず、目標値を明確にする。
そもそもなんのために実施していたのか
言語にする。
特に数値に落とし込む
例えば、型ガードをどの程度まで充実させるかという問いがあるとすると、その答えに対して目的を問う。
そもそもなんのために実施するのか?→asを利用しないため。
asを利用しないため
eslintのルールを設ける
jsonに対してどう型情報を推論させるか(安全かどうかは問わない)
→最低限でいいのでは?
ルールを無効化する
ルール無効化は無闇に利用しないので却下(基本テストのみしか利用しない)
その他の観点は?
undefinedを返却していいのか?
リポジトリ層からの戻り値がundefinedを含んでしまう
影響は?
おそらく、undefindをチェックしないといけなくなる
型としてundefinedがあり得るようになる。
こうあるべきみたいなあるべき論は?
この記事が気に入ったらサポートをしてみませんか?