Are ESLint rules around performance worth advocating?
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 20/100
- issue の種類
- ドキュメント
- 明瞭さ
- 説明が足りない
- 活発さ
- 停滞
- 技術スタック
- eslint, typescript
調査の方向性
パフォーマンスに関するリンク先の TypeScript wiki ページと、interface と明示的な戻り値の型を優先することを推奨している、参照されている ESLint ルールを読んでください。この issue は、これらのルールを推奨すべきか、またパフォーマンスにどの程度影響するかについて、maintainer の指針を求めています。変更対象のファイル、テスト、または具体的なドキュメント変更は特定されていません。
索引モデルが issue の本文から書いたものです。
説明
Hey @DanielRosenwasser,
I do hope you're well. First up, this is not directly an issue with the wiki at all, but I thought this was a good place to have a conversation about your wiki page on performance.
I was just talking with @dragomirtitian about me writing a blog post which would show how to take a few of the tips in here and apply them with ESLint; there’s ESLint rules out there that can help with this. Essentially the main ones of interest are:
- Prefer Interface over Type https://github.com/cartant/eslint-plugin-etc/blob/main/docs/rules/prefer-interface.md
- Enforce return types https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/explicit-function-return-type.md
Titian posed the (entirely helpful) question:
I'm sure these make difference.. By at what point.. 1K loc? 10Kloc? 100? If this is a concern for huge scale projects is it really worth it for smaller projects? I mean shaving off 0.2s in a build doesn't seem worth it if I have to maintain a type and an inferable return type.
This is a great question. And I have to state a personal stylistic preference fortypes over interfaces, as well as preferring return type inference. Much less noisy. But perf is royalty and style is secondary.
My own feeling is that if you want to go with these rules, it’s easier if you start with them at the beginning of a project that you expect to grow. As retro-fixing all of these in a codebase would not be fun!
Anyway, rambling done. I have two questions for you if have a moment:
-
Is it worth blogging to advocate that people use the above ESLint rules? Or is this potentially transient advice? Something that’s useful now but could change as the compiler evolves?
-
Do you have a feeling for what level of difference that following these standards can make? The answer will no doubt be "it depends", but I'm curious if you happen to have an idea for what the boundaries of success could look like here. So, is it possible to say something like "enforcing return types on functions has been observed to improve type checking performance by up to 40%", or "preferring
interfaces overtypes has been observed to improve type checking performance by up to 20%"? Actually having an idea of the level of difference that could be made is a super helpful piece of info. (Essentially this is Titian's question 😄 )
I hope you don't mind me posting the question here. I did consider DMing you instead, but I thought I'd do a @swyx and "learn in public" 😄
- 主要言語
- JavaScript
- スター
- 759
- フォーク
- 315
- PR マージ指標
- 30日以内にマージされた PR はありません
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
microsoft/TypeScript-wiki のほかの issue
-
難易度 1/5 1時間未満 初心者へのやさしさ 50/100
microsoft/TypeScript-wiki#327 ·
-
難易度 5/5 1週間以上 初心者へのやさしさ 15/100
microsoft/TypeScript-wiki#323 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 25/100
microsoft/TypeScript-wiki#307 · リアクション 1 件 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 35/100
microsoft/TypeScript-wiki#293 · コメント 2 件 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 25/100
microsoft/TypeScript-wiki#260 · コメント 2 件 ·
microsoft/TypeScript-wiki の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
docToolchain/docToolchain#1705 ·
-
Timezone select lists one option per character; duplicate "Failed" reason; shared tracker popover id オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
nightscout/nocturne#1414 ·
-
bug v2
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
modelcontextprotocol/inspector#2458 · コメント 1 件 ·
-
Mend: dependency security vulnerability status: needs triage 🕵️♀️
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
carbon-design-system/ibm-products#9907 ·