microsoft / microsoft/TypeScript

Allow primitive LHS to `instanceof` operator if RHS is a custom `hasInstance`

オープン
#63,219 コメント 2 件 リアクション 2 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

Awaiting More Feedback Suggestion
主要言語
Go
スター
111k
フォーク
14.3k
平均マージ
2日 4時間
マージ済み PR(30日)
132

説明

### 🔎 Search Terms

in:title instanceof

### 🕗 Version & Regression Information

- This changed between versions 5.2 and 5.3
- This changed in commit or PR #55052

### ⏯ Playground Link

https://www.typescriptlang.org/play/?#code/IwAglgdgzgLghhAxgUwPYDMQG8QG0DKAngLYBGqANgHQAWcUAktPEsgLoAUAlNiAE7IYAVz4QQMPkOQgAvjICwAKAD0ykAD0QAFRrSKydDAC0dCABMQUMGekYQCEAHJIsBCgyOQyAB4AHAVBWqGLEQrAgpLaYMIS+0o4IhI4ANPZiqKQAVsiIMOKxtnz2+XEgvnB8cMSCyHxUHABMAMwArAAcXEA

### 💻 Code

```ts
1 instanceof { [Symbol.hasInstance]() { return true }}
```

### 🙁 Actual behavior

Error: The left-hand side of an 'instanceof' expression must be of type 'any', an object type or a type parameter.(2358)

### 🙂 Expected behavior

No errors

### Additional information about the issue

For custom 'Symbol.hasInstance' methods, `number instanceof obj` can return true or false according to implementation.

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

リンクされた TypeScript Playground の再現例から始め、`1 instanceof { [Symbol.hasInstance]() { return true }}` について報告された動作を期待される結果と比較します。次に、`instanceof` 式の型チェック経路を追跡し、右辺がカスタムの `Symbol.hasInstance` を定義している場合に、プリミティブの左辺が受け入れられることを示すカバレッジを追加します。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
typescript
領域
compilers
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
静か
明瞭さ
おおむね明確
初心者へのやさしさ
58/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。