TypeScript 少しわかりにくい過剰プロパティチェックの動き
オブジェクトリテラル型に存在しないプロパティがある場合に、過剰プロパティチェックの働きによってエラーが発生します。
例えば以下のコードでは、Data型にはinvalidというプロパティは定義されていませんので、過剰なプロパ ...
TypeScript {}型は一体なんなのか
たまに見る {} は、空のオブジェクトのようなので object 型と同じようなものかと思いきや、実は直感とは違う動きをするので注意です。
実際は null と undefined を除いたすべての型を入れることができます ...
TypeScriptのanyとunknownの違いを簡潔に
anyとunknownにはどんな値も代入できます。これは同じです。
以下はどちらもコンパイルエラーになりません。
let a: any = 100;let c: unknown = 100;anyとunknow ...
JavaScriptはどんな言語か うまくやってくれるけどそれによってバグが起きてしまう
javascriptで以下のコードを書いた時に、結果は’5’になります。
5 + []//文字列の5人間がやろとしたことを予測していい感じに変換してくれているように見えます。
しかし、逆 ...
TypeScript 共変と反変について
Animal型とDog型があるとします。AnimalはDogのスーパークラスのような位置付けです。
type Animal = 'Dog' | 'Cat' | 'Tami'type ...
TypeScript 関数のパラメータは反変であるべき
string | number は string のスーパークラスなので、child に (_: string) =>console.log(‘child’)は入れられるべきではない。
type Pare ...
TypeScript strictNullChecksについて
strictNullChecksがfalseの場合、すべての型にnullもしくはundefinedを入れることができます。
type Hoge = stringconst str1: Hoge = null//エラーにならないc ...
TypeScriptを使っていて感じたこと
string型から特定の文字列を除外した型を作ろうとしていたけど、これってそもそもTypeScriptでやることなのか疑問に思った。
普通にJavaScriptで条件を書いた方が直感的にわかりやすいし、要は使い道が正しいか ...
JavaScript Object.sealでオブジェクトのプロパティの変更のみ許可する
Object.seal を使うことでオブジェクトの既存のプロパティの変更のみを許可し、プロパティの追加や削除を無効化できます。
const data = {hoge: 'hoge'};Object.seal(da ...
JavaScript入門 &&(論理積)について
result の結果は何になるでしょうか。
const result = 1 && 'tami';正解は以下です。
'tami'A && B は、Aがtrueに変 ...