2024-08-06 TSKaigi サブイベント #1 フロントエンド
タグ検索の該当結果が少ないため、タイトル検索結果を表示しています。
気になったので調べてみました。 tsconfig.jsonと普通のJSONの大きな違い tsconfig.jsonには、コメントが書けます。 tsc --init した時に生成されるtsconfig.jsonに、大量にコメントが付けられているので、すぐに気付くことと思います。 例) { "compilerOptions": { "target": "es5" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd
型推論オプション 型推論の結果が変わるもの。 ⭐strict ... 以下のセット alwaysStrict strictNullChecks T | null や T | undefined が T に縮退しなくなる。 例 strictBindCallApply Function の各種メソッドが any に縮退しなくなる。 例 strictFunctionTypes コールバック関数の引数が共変でもunifyするようになる結果、型変数の推論優先度が変わることがある。 例 strictPropertyInitialization noImplicitAny 宣言型がない場合にflow typeが使われる機会が増える。 例 noImplicitThis thisの宣言型がない場合に文脈から型が決定される機会が増える。 例 useUnknownInCatchVariables catch (
{ "extends": "@tsconfig/strictest/tsconfig.json", } 以上です! tsconfig.json ってどんなふうに書いていますか?? tsconfig.json をこんな感じで書いている人はいないでしょうか { "compilerOptions": { "strict": true, "allowUnusedLabels": false, "allowUnreachableCode": false, "exactOptionalPropertyTypes": true, "noFallthroughCasesInSwitch": true, "noImplicitOverride": true, "noImplicitReturns": true, "noPropertyAccessFromIndexSignature": true, "noU
TL;DR "include": ["src/index.ts"] はやめよう src 配下にあるのに型チェックされない & auto-import できないファイルが生まれてしまう "include": ["src/**/*"] や "include": ["**/*"] がオススメ どっちが良いかはプロジェクトによる "include": ["src/**/*"] は "include": ["src"] と、"include": ["**/*"] は include 指定無しと同じなので、それでも OK すっごい凝りたいなら Solution Style tsconfig.json を使おう はじめに tsconfig.json の include オプションは、プロジェクトを構成するファイルを指定するオプションです。 https://www.typescriptlang.org/j
概要 社内勉強会の資料。 TypeScriptのtsconfig.jsonにはオプションが色々とあるので、それらの意味や用途を理解する目的です。 tscのバージョンは3.7.2を使用します。 VSCodeのバージョンは1.40.1を使用します。 公式のドキュメント:https://www.typescriptlang.org/docs/handbook/tsconfig-json.html 公式ドキュメントの和訳:http://js.studio-kingdom.com/typescript/project_configuration/tsconfig_json また、各項目の詳しい説明はdetailsタグを使ってデフォルトで非表示にしています(全部デフォルトで表示するとめっちゃ長いので)。「詳しく」の部分をクリックすると展開されます。 2020年5月24日追記 公式のtsconfig.j
ANDPADフロントエンドエンジニアの小泉(@ykoizumi0903)です。Vue / Nuxt での開発を行っています。 このテックブログでも、 Vue Composition API を使った開発にまつわる記事を過去に何件か書いていますが、現在担当しているプロダクトの開発に携わるようになって2年ほど経ち、いわゆる技術的負債と呼ばれるようなものも少しずつ増えてきました。 そういった状況を改善するアプローチの1つとして、Nuxt.js の既存リポジトリにおける型チェックのルールをより厳しい設定に変更する、という取り組みを2ヶ月ほどかけて行いました。 今回はその取り組みにおける道のりを振り返って、苦労したことや良かったことなどを書いてみたいと思います。 導入を決めるまでの流れ きっかけは noUncheckedIndexedAccess を知ったことから 弊社のSlackにはtimes文化
TSConfig の compilerOption に stripInternal という設定があります。 TSConfig Reference #Strip Internal この設定を有効にすると、JSDoc に @internal を指定したコード(クラス、メソッド、変数、関数)がコンパイル時に生成される .d.ts へ出力されなくなります。 これにより、C# や Kotlin の internal、Java の package private のようなアクセス修飾子相当の振る舞いを TypeScript で実現できます。 TypeScript では、export を使ってコンパイル後のモジュールを構成する必要がありますが、モジュール内部に閉じたアクセス制御を行うことはできません。stripInternal を設定することで、モジュール内でのみ公開するコードを明示的に指定できます。
TypeScript でライブラリ (npm パッケージ) を作るときに, ビルド用の tsconfig を用意することがあります. 例えば以下のような tsconfig.json を作成したとしましょう. { "compilerOptions": { "rootDir": "src", "outDir": "lib", "target": "esnext", "module": "esnext", "moduleResolution": "bundler", "esModuleInterop": true, "strict": true, "sourceMap": true, "declaration": true }, "include": [ "src/**/*" ] } これを使って素朴に tsc -p tsconfig.json のようにビルドすると, src/index.ts
tsconfig.jsonを書く時に必要なオプションが何だったか、どんな役割を持つかを忘れてしまうため、個人的によく使いそうなオプションを書いていきます。 TypeScriptのバージョンは4.4です。 各オプション target TypeScriptはJavaScriptにコンパイルされるため、その時にどのバージョンのJavaScriptで出力するかをtargetで指定します。 ドキュメントを確認すると、デフォルトはES3ですが、以下の中からも選択できます。 es3, es5, es6/es2015, es2016, es2017, es2018, es2019, es2020, es2021, esnext どれを選択すれば良いかは、Node.jsのバージョン毎に推奨されるtargetがあるため、node.greenを確認します。Node.jsのバージョンは、node -vで確認できま
TypeScriptの設定ファイルを雰囲気でコピらないための記事 TL;DR moduleはどのモジュールパターンで出力するかを指定する Node.jsでの利用想定ならcommonjs ブラウザ側での利用ならumd targetはどの動作環境向けにトランスパイルするかを指定する 利用環境が想定できないならes3やes5 下位互換性のあるコードへの変換をBabelで行うならesnext module とは JavaScriptにはいくつかのモジュールパターン(CommonJSやAMD、ECMAScriptなど)がある。TypeScriptをJavaScriptに変換する際、どのモジュールパターンにするかをmoduleに指定する必要がある。 moduleには'none', 'commonjs', 'amd', 'system', 'umd', 'es6', 'es2015', 'esnext'
Matt PocockMatt is a well-regarded TypeScript expert known for his ability to demystify complex TypeScript concepts. tsconfig.json scares everyone. It's a huge file with a TON of potential options. But really, there are only a few configuration options you need to care about. Let's figure them out, and cheatsheet them. #Quickstart Want just the code? Here you go:
調査:良いDXをライブラリユーザーに提供するために、TypeScriptライブラリのtsconfig設定はどうあるべきか? このスクラップでは、TypeScriptでライブラリを開発し、それをNPMを通じて提供する際、ライブラリユーザーにより良い開発体験(DX)を提供するには、tsconfigの設定はどうあるべきかを調査するものです。 このスクラップが役立つかも知れない人 TypeScriptでライブラリを開発する人 アプリ開発者にはたぶん役に立ちません 良いDXとは? 良いDXは次のように定義する。 TypeScriptソースコードの閲覧可能 GOOD: IDEでライブラリのシンボル(関数名など)へジャンプしたときに、その実装がTypeScriptで読める BAD: 型定義ファイルにジャンプするので、実装を知ろうと思ったら、対応するバージョンのソースコードをGitHubで調べないといけな
webpack を使っていると typescript の module 指定は、ESM を treeshake するために "module": "esnext" としたい。 しかし、ts-node を前提としたユーティリティスクリプトを作っていると、"module": "commonjs" としないと実行に失敗するようになってしまう。ts-jest も同様。 ts-node に関しては、引数で compilerOptions を書き換える方法があり、次のようになる。 yarn ts-node -O '{"module":"commonjs"}' script/x.ts これだと常にこの引数を付けて実行する必要があり、不便。 ts-loader の configFile TypeStrong/ts-loader: TypeScript loader for webpack をちゃんと読むと、
A TSConfig file in a directory indicates that the directory is the root of a TypeScript or JavaScript project...
前置き 本スクラップでは、Reactプロジェクトにおいて、2023年現在におけるベストなtsconfig.jsonの設定を考えていく。 その際、参考にするのは、以下の3つである。 Next.js Vite サバイバルTypeScript 順に、それぞれ補足していく。 Next.js Next.js公式ドキュメントのcreate-tsconfigのページにある通り、空のtsconfig.jsonを作っておくと、Next.jsは勝手にtsconfigを生成してくれる。 実際に生成してみると、tsconfigが以下のようになった。 (使用バージョンはnext: 13.4.4) { "compilerOptions": { "lib": [ "dom", "dom.iterable", "esnext" ], "allowJs": true, "skipLibCheck": true, "stri
コピーtsconfig.jsonが作成されます。すでにtsconfig.jsonがある時は上書きされませんのでいったん既存のtsconfig.jsonを別名に変更するなど、一度tsconfig.jsonと名のつくファイルが存在しないようにしてください。 公式にあるtsconfig.jsonの説明はこちらです。 https://www.typescriptlang.org/docs/handbook/tsconfig-json.html すべてのオプションの解説をすると余白が足りないので、ここでは用途を抽出して、次の観点で説明します。 targetの決め方フロントエンドとバックエンド2020年版スクラッチからつくるならtargetTypeScriptは最終的にJavaScriptにコンパイルされます。このオプションはそのときにどのバージョンのJavaScript向けに出力するかといったもの
Type CheckingallowUnreachableCode, allowUnusedLabels, alwaysStrict, exactOptionalPropertyTypes, noFallthroughCasesInSwitch, noImplicitAny, noImplicitOverride, noImplicitReturns, noImplicitThis, noPropertyAccessFromIndexSignature, noUncheckedIndexedAccess, noUnusedLocals, noUnusedParameters, strict, strictBindCallApply, strictFunctionTypes, strictNullChecks, strictPropertyInitialization and useUnkn
Sick of scouring the TypeScript docs to setup your TSConfig?I was too, so I built this tool to get you started with some smart defaults! This TSConfig builder is heavily influenced by Matt Pocock's TSConfig Cheat Sheet. I highly encourage you to check it out for further explanation of these properties.
どうも、フロントエンドエンジニアのおいなりです。 今回はタイトルにある通り、ts-nodeを使って「tsconfig.json」のpathsをちゃんと読み込ませるために必要な指定について書いています。 というのも、最近自分で作っている『First Vue』のバックエンド側をTypeScriptに変えようとしたときにこの問題が発生しました。 ただ、これがベストな方法なのか不明なので、わかる方ツイッターからでもご指摘ください! Node.js + TypeScriptでエイリアスを指定する まず前提として、TypeScriptで独自のエイリアスを指定するためには、「tsconfig.json」に下記のような記述をしなければいけません。 tsc --initのコマンドで「tsconfig.json」を生成した場合には、コメントとしてすでに記述されているので、それを有効にしましょう。 { "com
この記事は TypeScript アドベントカレンダー 2019 の 24 日目です。 はじめに Webpack 等でビルドせずに node で実行する際に tsconfig の path alias が解決されなくて困る方も多いと思います。 一方 ts-node じゃなくても tsconfig-paths/register で path alias が解決できることは意外と知られておらず、実は $ node -r tsconfig-paths/register dist/main.js で解決します。 しかし、 Production で動く node に TypeScript 由来の何かに依存しているのは怖いということもあるので、 tsconfig-paths の中身を読んだので何をしているかを説明します。 サンプルプロジェクト構成 以下の構成で実行します。サンプルリポジトリは以下になり
概要 プロジェクトが進行するにつれて失敗からの学びを得たり、フェーズの変化により強力な eslint の rule を追加したい場合があります。しかし、次に示す特性を持つ rule を途中から追加するのは、手動で変更するファイルが多すぎて困難になるケースがあります。 既存コードに対してのエラーの件数が100件を超えている --fix による自動修正が提供されていない この記事では サービスを止めずにコードのクオリティを上げる TypeScript+Reactで安全に開発を続ける方法 - ログミーTech を参考に reviewdog を使用して、厳しい tsconfig や eslint rule を段階的に適用する方法を紹介します。 方法 以降は eslint rule について説明していきます。tsconfig やその他ツールについても同様に設定が可能です。 reviewdog は l
フロントエンドでもバックエンドでもTypeScriptこれ一本!Universal JSという考えがあります。確かにフロントエンドを動的にしたいのであればほぼ避けて通れないJavaScriptと、バックエンドでも使えるようになったJavaScriptで同じコードを使いまわせれば保守の観点でも異なる言語を触る必要がなくなり、統一言語としての価値が大いにあります。 しかしながらフロントエンドとバックエンドではJavaScriptのモジュール解決の方法が異なります。この差異のために同じTypeScriptのコードを別々に分けなければいけないかというとそうではありません。ひとつのモジュールをcommonjs, esmoduleの両方に対応した出力をするDual Packageという考えがあります。 Dual Packageことはじめ名前が仰々しいですが、やることはcommonjs用のJavaSc
const path = require("path"); module.exports = { // モジュールバンドルを行う起点となるファイルの指定 // 指定できる値としては、ファイル名の文字列や、それを並べた配列やオブジェクト // 下記はオブジェクトとして指定した例 entry: { bundle: "./src/index.ts", }, // モジュールバンドルを行った結果を出力する場所やファイル名の指定 output: { path: path.join(__dirname, "dist"), // "__dirname"はファイルが存在するディレクトリ filename: "[name].js", // [name]はentryで記述した名前(この設定ならbundle) }, // import文でファイル拡張子を書かずに名前解決するための設定 // 例...「impor
概要 本記事は、 Vue.js の公式ツールである create-vue によって生成された tsconfig.json を元に、 Vue 3 + TypeScript における、 tsconfig のベストプラクティスを理解しようという内容です。 注意事項 筆者自身はまだまだ Vue 及び TypeScript の理解が不十分であり、誤った解釈を含んでいる可能性があるのでご注意ください。 なにか間違いなどにお気付きの場合は、コメントまたは GitHub での編集提案を頂けると幸いです。 create-vue について create-vue は、Vite ベースの Vue プロジェクトを CLI から構築できるツールです。 上記のようなコマンドから、対話形式の質問に解答することで、ビルド設定から周辺ライブラリの追加、テストやリンター、フォーマッターのセットアップまで行ってくれます。 本記事
Use this to load modules whose location is specified in the paths section of tsconfig.json or jsconfig.json. Both loading at run-time and via API are supported. Typescript by default mimics the Node.js runtime resolution strategy of modules. But it also allows the use of path mapping which allows arbitrary module paths (that doesn't start with "/" or ".") to be specified and mapped to physical pat
JavaScript is constantly evolving, from its roots as a simple scripting language into a robust, modern tool for building complex applications. To manage larger, complicated code bases, JavaScript developers are constantly looking for ways to improve their workflows, their code quality and productivity. TypeScript is a major innovation towards improving code quality and maintenance by adding types,
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く