microsoft / microsoft/TypeScript
Inconsistent enum literal types
- 主要言語
- Go
- スター
- 111k
- フォーク
- 14.3k
- 平均マージ
- 2日 4時間
- マージ済み PR(30日)
- 132
説明
### 🔎 Search Terms
return type inference enum union literal fresh regular
### 🕗 Version & Regression Information
- This is the behavior in every version I tried
### ⏯ Playground Link
https://www.typescriptlang.org/play/?ts=5.8.0-dev.20250216#code/KYOwrgtgBAolDeUCCAaKAhKBfAUDgLgJ4AOwGA9gB4A8AKgHxQC8COUUA5sPgFxQAUASmaNaAbjZQAztz78AbgEMANmGB9awpo3nkAlgBMJWCTgPAAxssUAnMgDMwIC-j3kQUAEZU69BSrUNQT50HwZTC3cpfC8QAEZmLyp+AAZBMSgAekyKGnAIT2AbehxIkGjYgCYQn3zC4sTvSlT0rJyAeQBrPDKKwoSWJv4YADokVuzc6hgS3pjC6qmZxuTR8YzJmBsbchs0JumxxhByGMUpKT0OEEVPZTJ8ciWSoA
### 💻 Code
```ts
enum E { A, B }
type Box = {
get: () => T;
set: (value: T) => void;
};
declare function box(value: T): Box;
const bn1 = box(0); // Box
const bn2: Box = box(0); // Ok
const be1 = box(E.A); // Box
const be2: Box = box(E.A); // Error, box not assignable to Box
```
### 🙁 Actual behavior
`be2` errors
### 🙂 Expected behavior
`be2` shouldn't error
### Additional information about the issue
This is an enum-based variant of https://github.com/microsoft/TypeScript/issues/48363 . As such it relates to the open https://github.com/microsoft/TypeScript/issues/59754 too
コントリビューションガイド
調査の方向性
リンクされた TypeScript Playground の再現コードから始め、bn1、bn2、be1、be2 の推論された型を比較してください。既存のコンテキストについては関連する issue #48363 と #59754 を読んでください。enum ベースの be2 の代入でエラーが発生しなくなり、期待される推論動作が維持されれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- typescript
- 領域
- compilers
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 35/100