ブックマーク / numb86-tech.hatenablog.com (3)

  • TypeScript の型定義ファイルの探索アルゴリズム - 30歳からのプログラミング

    npm パッケージは基的に、JavaScript ファイルで配布されている。TypeScript で開発しているパッケージであっても、JavaScript にビルドしたものを配布している。 そのため、型定義ファイルによって型付けしないと、インポートした際にモジュール全体がanyになってしまう。 これでは型システムの恩恵を受けることができないし、noImplicitAnyフラグをfalseにしていない場合はコンパイルエラーになってしまう。 npm パッケージをインポートした際、TypeScript は自動的に型定義ファイルを探索し、最初に見つかったものを使用する。 また、プロジェクト内にある JavaScript ファイルをインポートした際も、型定義ファイルの探索が行われる。 この記事では、TypeScript がどのように型定義ファイルを探索するのか、実際に検証して確認していく。 動作確

    TypeScript の型定義ファイルの探索アルゴリズム - 30歳からのプログラミング
  • SPA の CSRF 対策や CORS について検証する - 30歳からのプログラミング

    2021/4/23 追記 Twitter にて指摘を頂いたので追記。 詳細は当該ツイートを読んで頂きたいが、プリフライトリクエストを CSRF 対策として用いるのは適切ではないという内容。 この記事に書いた仕組みや挙動そのものが間違っているわけではないのだが、プリフライトリクエストはそもそもセキュリティのための機能ではない。 そして、詳しくは記事の続きを読んでほしいが、プリフライトリクエストが発生するということは、HTTP メッセージのやり取りが 1 回増えるということなので、パフォーマンス上、望ましくない。 代替案がないならともかく、リクエストのオリジンをチェックすれば対応できるのだから、敢えてプリフライトリクエストを利用する必要はない。素朴に書けば以下のようになるだろうか。 const ALLOW_ORIGIN = `http://localhost:${constants.SPA_P

    SPA の CSRF 対策や CORS について検証する - 30歳からのプログラミング
  • オブジェクトの値をコピーするObject.assign() - 30歳からのプログラミング

    JavaScriptでは、オブジェクトが格納されている変数を他の変数にコピーすると、そのオブジェクトへの参照がコピーされる。 そのため、元となるオブジェクトの値を変更すると、コピー先のオブジェクトにも変更が反映されてしまう。逆も然り。 let obj1 = {value:'hoge'}; let obj2 = obj1; obj1.value = 'fuga'; console.log(obj2); // { value: 'fuga' } だがES2015で追加されたObject.assign()を使うと、参照ではなく値をコピーできる。 値が同じだけの全く別のオブジェクトなので、一方で行った変更の影響は、もう一方には及ばない。 let obj1 = {value: 'hoge'} let obj2 = Object.assign({}, obj1); console.log(obj2);

    オブジェクトの値をコピーするObject.assign() - 30歳からのプログラミング
  • 1