TypeScript enumの落とし穴 その1
TypeScriptのenumは安全に使用するにあたっていくつかの落とし穴があります。
今回はenumへの数値の割当のご紹介です。
const enum MyEnum { Hoge, Foo, Bar}let a = ...
TypeScript タプルについて
TypeScriptのタプルを使うことで、固定長の配列の型を定義することができます。
以下は、一つ目の要素にユーザー名(string)、二つ目の要素に年齢(number)を持つタプルの定義です。
type User ...
TypeScript インデックスシグネチャについて
インデックスシグネチャを使用することで明示的に宣言したオブジェクトのキー以外で、型を宣言することができます。
type Hoge = { id: number : string}Hoge型はidというプロパティを持ち、その ...
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 ...