タグ null
人気順 10 users 50 users 100 users 500 users 1000 usersJavaScript である値がオブジェクト型であることを判定する変なテク
TC39の活動で有名なJordan Harbandが作成した下記issueで知ったのでメモ。 前提として、次のコードによって x がオブジェクト型であることを判断できる。JavaScriptにおける null は typeof の結果が "object" になるという有名な変な挙動がカバーされている。 function isObjectA(x) { return (typeof x === "object" &... 続きを読む
TypeScript 5.5で型述語を推論できて最高。配列のfilterも型安全に
結論を先に言うと、6月リリース予定のTypeScript 5.5で次のようなコードが型安全になります。 従来: TypeScript 5.4以前 function isNumber(value: number | string): value is number { return typeof value === 'number'; } const result = [12, null, 24, undefined, 48] .filter((value): value is number => value ... 続きを読む
ESLint の共有設定を Flat Config に対応させる - Object.create(null)
まえがき こんにちは, 人間 ESLint です. そんな人間 ESLint の私ですが, 私一人があらゆるコードに注意深く目を通して, さらに修正案まで提示するというのは大変です. 多くの問題は機械的に検知できるはずなので, そういった仕事を私の代わりにしてくれるメカ人間 ESLint が欲しくなってきます. そんなわけで, 4 年ほど... 続きを読む
中止ボタンがしいたけに見えて困る - Object.create(null)
令和最新版. Vivaldi でアイコンがカスタマイズできるようになっている テーマ設定画面を眺めていたら, Vivaldi 6.0 からツールバーのアイコンがカスタマイズできるようになっているのに気がつきました. 流石 Vivaldi です (?) vivaldi.com しいたけ復活 こうなっては中止ボタンをしいたけにするしかありません. しいた... 続きを読む
TypeScript 型レベル関数型プログラミング in 2023 - Object.create(null)
ちょっと前に話題になった hotscript の技法の紹介やら, ラムダ計算を TypeScript の型にコンパイルする話やらなんやら. 通常の型レベル関数 TypeScript の型エイリアスはパラメータを取れるので, これは型レベルの関数であるとみなせます. type IsNumber<X> = X extends number ? true : false; type A = IsNumber<42>;... 続きを読む
TypeScript エラー処理パターン - Object.create(null)
M 年前にも N 年後にも人類は同じ話をしている. まとめ エラーの発生方法は throw と return に大別できる throw には簡潔さ, return には明瞭さと型安全性といった特徴がある どちらの方法がより適しているかはプログラムの規模, エラーの種類, ハンドリングの方法などが判断の材料になる 実際にどちらの方法を使うかは... 続きを読む
JavaScript の undefined と null を完全に理解する
JavaScript で頻出する undefined と null について語ります。 言語仕様上の違い JavaScript (ECMAScript) において、仕様上 undefined と null は当然ながら明確に区別されています。いくつか言語仕様上の扱いについて挙げてみます。 比較 厳密な比較演算子 === において undefined と null は区別されます。ゆるい比較... 続きを読む
令和最新版: PostgreSQLの安全なSET NOT NULL | Wantedly Engineer Blog
データベースのスキーマを変更するときは、スキーマの変更作業によってテーブルが長期間ロックされてしまわないように注意が必要です。 2019年にリリースされたPostgreSQL 12.0以降では、NOT NULLを安全に追加するためによりよいベストプラクティスができています。まだ知らない人もいるかもしれないので、ここで紹介し... 続きを読む
TypeScript で実行時の入力を含む文字列を型で弾く - Object.create(null)
TypeScript (4.7 時点) において, 文字列に付けられる型には以下の 3 つ (とそのユニオン型) があります. 文字列型 string 文字列リテラル型 ("foo" など) テンプレートリテラル型 (`data-${string}` など) これらのうち, 実行時の入力, 特に事前にパターンが想定されていないような任意の入力が含まれるような文字列に... 続きを読む
データベース設計におけるNULL - kawasima
3値論理の話は「3値論理 ―― 神のいない論理」が詳しい。 NULL絶対ダメ論や現実的には無理だから上手く付き合っていくしかないんだよ論など見られるが、せっかくCodd博士が上図の分類を提示しておられるので、これを元にもっと詳細化して考えてみよう。 ここで考えた全体のデシジョンツリーは以下のとおり。 ※ イミュータ... 続きを読む
TypeScript 型レベルプログラミング フリースタイルガイド - Object.create(null)
TypeScript の型レベルプログラミングのための真面目なスタイルガイドではありません. 型なしラムダ計算で喜ぶような人間が使うための諸刃の剣です. この記事の内容は TypeScript の 2022 年 1 月時点での最新版である 4.5.4 に基づいています. 将来のバージョンでの妥当性は保証しません. 「型〜」「〜型」という用語の... 続きを読む
CloudWatch Logs Insights を使って Mackerel 上にアプリケーションのメトリック監視環境を手早く構築する - Object.create(null)
この記事は Mackerel Advent Calendar 2021 の 15 日目の記事です. 昨日は id:kazeburo さんの mkr plugin install 時の403 API rate limit exceededエラーを回避する方法 でした. こんにちは id:susisu です. 普段は Mackerel 開発チームでアプリケーションエンジニアをしています. 先日 mackerelio-labs にて cloudwat... 続きを読む
TypeScript をより安全に使うために その 2: オブジェクトの具体的な形にアクセスするのを避ける - Object.create(null)
前回はこちら. susisu.hatenablog.com 引き続き環境は以下を前提とします: TypeScript 4.4 (この記事を書いている 2021 年 11 月時点の最新版) strict: true 原則: オブジェクトの具体的な形にアクセスするのを避ける ここで「オブジェクトの具体的な形にアクセスする」とは, 静的な型によらずに, 実行時にオブジェクト... 続きを読む
exactOptionalPropertyTypes によせて - Object.create(null)
TypeScript 4.4 に exactOptionalPropertyTypes というオプショナルなプロパティに関するコンパイラオプションが追加されるのを受けて, そもそもオプショナルなプロパティとは何なのか, どう使うと良いのか, exactOptionalPropertyTypes がどう嬉しいのかを考えてみます. あらかじめ私個人の立場を明らかにしておくと, ... 続きを読む
破産退場のNutsついに事件化、虚偽情報開示による偽計の疑いで元社長らが逮捕 : 市況かぶ全力2階建
nutsからnullへ pic.twitter.com/ANMgD2uGFD — 焼きパイナップル (@BUYANYSTEEL) October 3, 2020 ※破産退場のNuts、外部調査委員会の調査報告書で「ハコ系上場企業」と認定される(2020/09/29) パイナッツプル食べ太郎?@joggingbeer恥を忍んでご報告しますが、ptsでnutsで遊んでたら逃げ遅れました 株辛すぎる 2020/... 続きを読む
HTTPキャッシュ入門の入門 – cat /dev/random > /dev/null &
ローカル・経路上のキャッシュを併用しよう キャッシュは再利用されるほどいいものです。 サイトの規模にもよるのですが、ローカルと経路上のキャッシュはそれぞれ性質が異なるため、ブラウザキャッシュだけ適切に設定しておけば経路上では不要というわけではありません。 ローカルキャッシュはキャッシュを持つクライア... 続きを読む
正しいIT用語の読み方
最近の若者は物を知らない。 IT企業に就職したのに、IT用語の読み方を間違える恥ずかしいやつが多くて困る。 新入社員でもこれぐらいは抑えておいてほしい。 nginx: んぎぃぃっんくすhtml: はとむるAlt: あるとhidden: ひでんheight: へいとnull: ぬるUbuntu: うぶんつPHP: ぺちぷUPnP: うぴんぴPPPoE: ぽぽぽえーIEEE: ... 続きを読む
Web配信の技術という本を書きました – cat /dev/random > /dev/null &
twitterでなんどもつぶやいてるので多分知られているとは思うんですが、Web配信の技術という本を書きました。 せっかくなんで、なんでまたこんな本を書いたのかとかどういう流れだったのかみたいなのを簡単に書いてみようかなと そもそもどういう本なのか 非常にタイトルを決めるのが難しい本でした。 サブタイトルに「H... 続きを読む
TypeScriptにはanyが4種類、undefinedが3種類、……
このツイートの解説をします。 TypeScriptにはanyは4種類、undefinedは3種類、nullは2種類、trueは2種類、falseは2種類、neverは5種類あるのか。普通に使ってる分にはわからないが…… TypeScriptでは表面上は同じ名前でも内部的に異なる型が割り振られている場合がいくつかあります。そのようなもののうち、プリミティブ... 続きを読む
`let h = null`について、TypeScript はどのような型を推論するか - Qiita
Help us understand the problem. What is going on with this article? 続きを読む
Template String Types でパス文字列を解析してクエリする - Object.create(null)
※この記事に含まれる内容は TypeScript 4.1 のプレビュー版のものです. 今後仕様が変わり動かなくなる可能性もありますのでご注意ください. 話題の template string types で早速遊んでみます. ゴール .foo[1].bar といった形のパス文字列を型レベルで解析してクエリしちゃいます. こういう感じ: type R1 = Query<{ foo:... 続きを読む
テストの説明に安易に「正しく」とか書かない - Object.create(null)
みなさんテストは書いていますよね. 書いていなければふりだしに戻る. 例えば関数 add に対して, 以下のようなテストコードがあるとします. describe("add", () => { it("正しく計算できる", () => { expect(add(1, 2)).toBe(3); }); }); よさそうですね? もしよくないと思うのであればここから下は読まなくても大丈夫だ... 続きを読む
NULL嫌いのUPDATEしないDB設計 #DBSekkeiNight / DB design without updating - Speaker Deck
NULL嫌いのUPDATEしないDB設計 #DBSekkeiNight / DB design without updating 続きを読む
TypeScriptの異常系表現のいい感じの落とし所 | Developers.IO
みなさんTypeScriptでサーバアプリケーション(Node.js)のロジックを書く時に、異常系の表現をどのようにされていますでしょうか?ここでいう異常系とは、仕様上想定される異常のことです。準正常系と言ったりもするかと思います。 私はJavaScriptの延長でTypeScriptをはじめたので、最初は null や undefined を返した... 続きを読む
TypeScript で型レベル Brainfuck - Object.create(null)
TypeScript の型システムはチューリング完全ということが知られていますが, 同じくチューリング完全な言語である Brainfuck のインタプリタを実装することで, その計算能力を確認することができます. この記事のコードは TypeScript 3.8.3 で動作確認しています. ゴール 型レベルで Brainfuck のインタプリタを実装しま... 続きを読む