microsoft / microsoft/TypeScript

Incorrect TS1111 when using private generator function in JS

Abierto
#64,228 3 comentarios 0 reacciones 0 asignados Ver en GitHub
Needs More Info
Lenguaje dominante
Go
Estrellas
111k
Forks
14.3k
Merge medio
2 d 4 h
PR fusionados (30 d)
132

Descripción

### 🔎 Search Terms

An error TS1111 is raised when (properly) using a private generator function. I'm using VSCode, and it will report `Private field '#iterate' must be declared in an enclosing class.` when calling `child.#iterate()`.

### 🕗 Version & Regression Information

- I'm hitting this in VSCode 1.135.0

### 💻 Code

```js
class Foo {
*iterate() {
yield* this.#iterate()
}

*#iterate() {
const child = this.child
if (child instanceof this.constructor) {
yield* child.#iterate()
}
}
}

let f = new Foo()
for (const i of f.iterate()) {

}
```

### 🙁 Actual behavior

An error TS1111 is raised.

### 🙂 Expected behavior

There should be no error.

### Additional information about the issue

1. The error disappears if I call `this.#iterate()`, but of course that's not the point.
2. I can also clear the error by adding `assert(#iterate in child)` before the call

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

No se especifica ningún archivo fuente ni ninguna prueba. Empieza reproduciendo el diagnóstico TS1111 del ejemplo private-generator proporcionado en VSCode 1.135.0 y, después, sigue la comprobación de campos privados del compilador para la llamada `child.#iterate()`. Se considera terminado cuando el ejemplo no produce ningún error y una prueba de regresión cubre el acceso válido.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
javascript, typescript
Área
compilers
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Activo
Claridad
Bastante claro
Aptitud para principiantes
55/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.