microsoft / microsoft/TypeScript
Suggestion: Support readonly interfaces in `getSuggestedLibFor...`
- 主要言語
- Go
- スター
- 111k
- フォーク
- 14.3k
- 平均マージ
- 2日 4時間
- マージ済み PR(30日)
- 132
説明
### 🔍 Search Terms
readonly target library
### ✅ Viability Checklist
- [x] This wouldn't be a breaking change in existing TypeScript/JavaScript code
- [x] This wouldn't change the runtime behavior of existing JavaScript code
- [x] This could be implemented without emitting different JS based on the types of the expressions
- [x] This isn't a runtime feature (e.g. library functionality, non-ECMAScript syntax with JavaScript output, new syntax sugar for JS, etc.)
- [x] This isn't a request to add a new utility type: https://github.com/microsoft/TypeScript/wiki/No-New-Utility-Types
- [x] This feature would agree with the rest of our Design Goals: https://github.com/Microsoft/TypeScript/wiki/TypeScript-Design-Goals
### ⭐ Suggestion
Read-only variants of ECMAScript interfaces are currently not eligible for script target suggestions. This is most noticeable with `ReadonlyArray`, since this type can arise through syntax rather than by referencing the symbol directly.
```ts
[1,2,3].toReversed();
// ~~~~~~~~~~
// Property 'toReversed' does not exist on type 'number[]'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2023' or later.
([1,2,3] as const).toReversed();
// ~~~~~~~~~~
// Property 'toReversed' does not exist on type 'readonly [1, 2, 3]'.
```
It would be useful if the suggested lib checks could resolve these in the same way.
### 📃 Motivating Example
As above.
### 💻 Use Cases
N/A
コントリビューションガイド
調査の方向性
まず既存の getSuggestedLibFor... のチェックとそのテストを追跡し、可変および readonly の配列式がどのように解決されるかを比較します。報告された toReversed の例を受け入れ条件として使用します。両方の形式で適切な対象ライブラリが提案され、実行時の動作が変更されなければ完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- typescript
- 領域
- compilers
- issue の種類
- 機能追加
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 48/100