microsoft / microsoft/TypeScript
Allow primitive LHS to `instanceof` operator if RHS is a custom `hasInstance`
Nessuno ha ancora preso questa issue.
- Lingua principale
- Go
- Stelle
- 111k
- Fork
- 14.3k
- Merge medio
- 2g 4h
- PR unite (30g)
- 132
Descrizione
### 🔎 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.
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia con la riproduzione collegata di TypeScript Playground e confronta il comportamento segnalato per `1 instanceof { [Symbol.hasInstance]() { return true }}` con il risultato previsto. Traccia quindi il percorso del controllo dei tipi per le espressioni `instanceof`, poi aggiungi una copertura che mostri che un operando sinistro primitivo viene accettato quando l’operando destro definisce un `Symbol.hasInstance` personalizzato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- typescript
- Ambito
- compilers
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Tranquilla
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 58/100