microsoft / microsoft/TypeScript
Empty type inferred by Object.entries
オープン
まだ誰も着手していません。
Bug
Domain: lib.d.ts
- 主要言語
- Go
- スター
- 111k
- フォーク
- 14.4k
- 平均マージ
- 1日 19時間
- マージ済み PR(30日)
- 117
説明
TypeScript Version: 2.7.1
Search Terms: Object entries empty TS2365
Code
let o: any = {x: 5};
let p = Object.entries(o).map(([k, v]) => v + 1);
Compile command: tsc --lib es2017,es2017.object a.ts
Expected behavior:
This should compile without any error, assuming v: any.
This was the case for Typescript 2.6.2 at least.
Actual behavior:
(3,43): error TS2365: Operator '+' cannot be applied to types '{}' and '1'.
Following codes compile without errors:
let o: object = {x: 5};
let p = Object.entries(o).map(([k, v]) => v + 1);
let o: any = {x: 5};
let p = Object.entries(o).map(([k, v]: [any, any]) => v + 1);
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
TypeScript 2.7.1 で tsc --lib es2017,es2017.object a.ts を使用して a.ts の報告を再現し、その後、Object.entries の推論をここで説明されている 2.6.2 の動作と比較してください。まず、示されている map コールバックの型定義と推論されたタプル要素型を追跡してください。明示的に注釈付けされた代替案を壊すことなく、元の例が期待どおりコンパイルされれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- typescript
- 領域
- compilers
- issue の種類
- バグ
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 38/100