タグ

ブックマーク / qiita.com/uhyo (12)

  • TypeScriptを他のツールで取り扱うためのコンパイラオプションについて - Qiita

    TypeScriptプロジェクトにおいては、ビルド速度が重要です。TypeScriptのビルド速度はCI/CDの効率に直結します。しかしながら、tscはそこまで速くないことも知られており、tsc以外のツールをTypeScriptのビルドパイプラインに混ぜることもよく行われています。 TypeScript(tsc)のコンパイラオプションの中には、そのようなユースケースをサポートするためのものも存在します。公式ドキュメントではInterop Constraintsとして分類されているもの(の一部)です。この記事ではそれらを紹介します。 isolatedModules isolatedModulesは古くからあるTypeScriptのコンパイラオプションのひとつで、tsc以外を用いてTypeScriptトランスパイルするユースケースをサポートしてくれるものです。 TypeScriptの主な仕事

    TypeScriptを他のツールで取り扱うためのコンパイラオプションについて - Qiita
    efcl
    efcl 2023/12/06
    TypeScriptのオプション
  • TypeScriptでMapped Typesを使ってきれいなインターフェースを作る話 - Qiita

    みなさんこんにちは。この記事はTypeScript Advent Calendar 2020の5日目の記事です。 TypeScriptにはintersection typeという機能があります。これはT & Uのような構文をもつ型であり、意味としては「TでもありUでもある型」です。 構造的部分型とIntersection Type 「TでもありUでもある」という説明の仕方をされるとIntersection Typeが何の役に立つのかピンと来ないという方がいるかもしれません。実際のところ、Intersection Typeはオブジェクト型を合体するという役割によく使われます。 例えば、Tが{ foo: string }型でUが{ bar: number }型だった場合、T & Uは実質上{ foo: string; bar: number }型となります。 type T = { foo: s

    TypeScriptでMapped Typesを使ってきれいなインターフェースを作る話 - Qiita
    efcl
    efcl 2020/12/22
    Mapped Typeで型定義をし直すことで、`&`でつないだ型をFlatにできる
  • top-level awaitがどのようにES Modulesに影響するのか完全に理解する - Qiita

    先日、TypeScript 3.8 RCが公開されました。TypeScript 3.8はクラスのprivateフィールド(#nameみたいなやつ)を始めとして、ECMAScriptの新機能のサポートがいくつか追加されています。この記事で取り扱うtop-level awaitもその一つです。 この記事ではtop-level awaitに焦点を当てて、その意味や使い方について余すところなく解説します。top-level awaitは一見単純な機能に見えますが、実はモジュール (ES Modules) と深い関係があり、そこがtop-level awaitの特に難しい点です。そこで、この記事ではECMAScriptのモジュールについても詳しく解説します。この記事を読んでtop-level awaitを完全に理解して備えましょう。 ※ この記事は3分の1くらい読むと「まとめ」があり、残りはおまけで

    top-level awaitがどのようにES Modulesに影響するのか完全に理解する - Qiita
    efcl
    efcl 2020/03/10
    Top-Level awaitを含むモジュールの実行順について。循環参照のケース
  • TypeScriptの型レベル連結リスト活用術:型を変えられるコンテナを作る - Qiita

    皆さんこんにちは。この記事では、TypeScriptにおいて型レベル連結リストが役に立つ一例をご紹介します。当初以下のように練習問題の形でツイートしたところ、型レベル連結リストを用いる想定解にたどり着いた方がいました。おめでとうございます。 TypeScript練習問題: このようなContainer型をつくれ(ぇ https://t.co/zq25GiXDM2 pic.twitter.com/llveS6MCjG — 🈚️うひょ🤪✒📘 (@uhyo_) February 1, 2020 型レベル連結リストとは 連結リストはリストの表現方法の一種です。連結リストではリストの各要素が「自身の値」と「次の要素への参照」(あるいは次の要素そのもの)を保持しています。リストの各要素には、先頭要素から順番にたどることでアクセスできます。 型レベル連結リストでは、連結リストの構造を型として表現し

    TypeScriptの型レベル連結リスト活用術:型を変えられるコンテナを作る - Qiita
    efcl
    efcl 2020/02/08
    `asserts`がintersection型なの利用して変質させる話
  • そろそろJavaScriptに採用されそうなOptional Chainingを今さら徹底解説 - Qiita

    みなさん、Optional Chaining使ってますか? 私は先日出たTypeScript 3.7 Betaを小さいプロジェクトに導入して使ってみました。これはとても快適ですね。 例によって、Optional ChainingはECMAScriptに対するプロポーザルの一つです。つまり、もうすぐ入りそうなJavaScriptの新機能です。プロポーザルはたくさんの種類がありますが、その中でもOptional Chainingはその高い有用性からこれまで多くの注目を集めてきました。Optional Chainingは2019年6月のTC39ミーティングでStage 3に上昇し、いよいよ正式採用が近く期待も高まってきたところです。TypeScript 3.7にも導入されたため、TypeScriptユーザーの方々は11月上旬に正式リリースが予定されているTypeScript 3.7を今か今かと待

    そろそろJavaScriptに採用されそうなOptional Chainingを今さら徹底解説 - Qiita
    efcl
    efcl 2019/10/24
    Optional ChainingのTC30のミーティングと他の言語との比較
  • TypeScriptで最低n個の要素を持った配列の型を宣言する方法 - Qiita

    TypeScriptでは配列の型はT[]のように宣言します(Array<T>でも可)。この配列は、もちろん要素数が何個でも構いません。 const arr1: number[] = [0, 1, 2]; const arr2: number[] = [0]; const arr3: number[] = []; しかし時折、「2個以上の要素を持った配列」のような条件を書きたくなることがあるかもしれません。すなわち、配列の最低要素数を型で指定したいという場合ですね。実はTypeScriptでは、タプル型を応用することでこれが可能です。 タプル型を用いた最低要素数の表現 // 要素が最低2個あるT型の配列 type AtLeast2<T> = [T, T, ...T[]]; const arr1: AtLeast2<number> = [0, 1, 2]; // これはOK const arr

    TypeScriptで最低n個の要素を持った配列の型を宣言する方法 - Qiita
    efcl
    efcl 2019/06/05
    配列の最低要素数の宣言
  • TypeScriptの型におけるJSXサポートが100%分かる記事 - Qiita

    TypeScriptJavaScriptに静的型を付けることができるAltJSです。2015年9月に登場したTypeScript 1.6ではJSXのサポートが搭載され、.tsxという拡張子を用いることでJSXを含むコードを書いたり型チェックしたりすることができます。 JSXはJavaScriptに対してHTML(あるいはXML)のタグのような構文を導入する拡張記法です。以下の例のようにJavaScriptプログラム中に式としてタグを書くことができます(https://facebook.github.io/jsx/ から引用): // Using JSX to express UI components. var dropdown = <Dropdown> A dropdown list <Menu> <MenuItem>Do Something</MenuItem> <MenuItem>

    TypeScriptの型におけるJSXサポートが100%分かる記事 - Qiita
    efcl
    efcl 2019/03/30
    JSXの型定義。 IntrinsicAttributesとかについて
  • 👻globalThis👻と🌏global🌏と🌝this🌝 - Qiita

    皆さんこんにちは。今回はJavaScriptの👻globalThis👻について解説しようと思います。globalThisはJavaScript (ECMAScript) の新機能です。現在TC39プロセスのStage 3にあり1、このまま何事もなければ近いうちにECMAScript2に正式採用されることになります。 この記事はJavaScript2 Advent Calendar 2018の5日目の記事です。 さて、皆さんはこのglobalThisを使ったことがあるでしょうか。私はありません。というか、現在のところglobalThisが利用可能なのは、つい今日安定版がリリースされたばかりのGoogle Chrome 71のみです。この記事にはglobalThisを使ったコード例が出てきますが、実際に動かしたい場合はちゃんとGoogle Chromeが最新版になっているか確認してください

    👻globalThis👻と🌏global🌏と🌝this🌝 - Qiita
    efcl
    efcl 2018/12/07
    `globalThis`について。 module空間でのグローバル変数について
  • JavaScriptの { } を理解する - Qiita

    結果はどうなったでしょうか。 自分が今使っているGoogle Chromeだとこうなりました。 結果は{a: 10}というオブジェクトです。まあ、これは当然ですね。3 + 5と入力すれば実行されて8が返ってくるのですから、{a: 10}というオブジェクトリテラルを書けば{a: 10}というオブジェクトが作られるのは当然です。 ……。 ここで、一部の人は「おいふざけんなよ」と思っているかもしれません。というのも、この例は環境によっては違う結果になるのです。具体的には、Chrome以外2のブラウザのREPL(FirefoxやEdgeなど)が該当します。あと、ts-nodeのREPLも該当するらしいです。これらの環境では、結果は{a: 10}ではなく次のようになります。 オブジェクトを作ったはずなのに結果が10とか意味不明ですね。そもそも、こんな簡単なプログラムで結果が全然違うとか、JavaSc

    JavaScriptの { } を理解する - Qiita
    efcl
    efcl 2018/11/12
    REPLの評価の話。 式と文、ブロック式、Completionについて
  • TypeScriptの型初級 - Qiita

    この記事は「TypeScriptの型入門」の続編です。入門の続編ということなので初級というタイトルにしてみました。TypeScriptの型よくわからんという方は先に入門から読むことをおすすめします。入門レベルのTypeScriptくらい分かるよという方は読まなくても大丈夫です。 TypeScriptの型入門 さて、前回の記事ではTypeScriptの型を一通り紹介しました。この記事ではその続編として、実用上必要になるTypeScriptの型の挙動を理解したり、標準ライブラリに存在する型の使い方を理解することを目標にします。前回に引き続き、あくまでTypeScriptの型に関する話ですから、JavaScriptの言語機能とか、TypeScriptの構文とかの話はしません。悪しからずご了承ください。 最終更新: 2019-03-16 (TypeScript 3.4に対応しました) union型

    TypeScriptの型初級 - Qiita
    efcl
    efcl 2018/10/29
    TypeScriptのAdvancedな型、標準ライブラリの型について
  • JavaScriptのプリミティブへの変換を完全に理解する - Qiita

    JavaScriptでは、オブジェクトからプリミティブへの暗黙の変換が発生することがあります1。その結果、例えば次のような楽しい事態が生じます。 console.log(["foo", "bar"] == "foo,bar"); // true console.log([""] == 0); // true console.log((123 ^ {}) === 123); // true const obj1 = ["😂"]; const obj2 = ["😂"]; console.log(obj1 == "😂", "😂" == obj2); // true true console.log(obj1 == obj2); // false このような挙動は面白いので、Twitterとかで誰かが話題にするたびに多少は話題になります。しかしいい加減飽きたので、皆さんにはこんなの常識とし

    JavaScriptのプリミティブへの変換を完全に理解する - Qiita
    efcl
    efcl 2018/05/10
    https://asciidwango.github.io/js-primer/basic/implicit-coercion/ に暗黙的な型変換を避ける話を書いた。 プリミティブなSymbolは暗黙的な変換で例外を投げるとかもあるので、ToPrimitiveな変換規則を覚える必要性はないかなと思ってる。
  • TypeScriptの型入門 - Qiita

    TypeScriptは型がついたJavaScriptです。プログラミングにおいて型があることの恩恵は大きく、近頃AltJSの代表格として人気を集めています。TypeScriptはもともと型のないJavaScriptで書かれるコードに型を付けることを使命としていることもあり、たまに変な型が追加されます。例えばTypeScript2.8で追加されたconditional typesはずいぶん注目を集めました。これによってTypeScriptの型システムの表現力が広がりましたが、一方でTypeScriptを書いている人の中には、よく分からない型が増えてついて行けない、一部の人たちが長くてよく分からない型定義を書いて喜んでいるだけと思っている方もいるのではないでしょうか。実際、健全にJavaScriptを書いていれば、自分でそのような変な型を書くことはあまり多くありません。 そこで、この記事ではT

    TypeScriptの型入門 - Qiita
    efcl
    efcl 2018/02/19
    TyepScriptの型定義についての記事。 基本的なプリミティブ、オブジェクト、関数などの型の書き方や意味の説明、特殊な型定義などについてを説明している。
  • 1