microsoft / microsoft/TypeScript
Missing type error for invalid use of #private field
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Go
- Estrellas
- 111k
- Forks
- 14.4k
- Merge medio
- 1 d 19 h
- PR fusionados (30 d)
- 117
Descripción
Bug Report
ES #private fields are not source-positional, but scoped to each instance of a class. (That is unfortunate, in my humble opinion). However TypeScript is not detecting this case.
🔎 Search Terms
typescript no type error private field mixin
🕗 Version & Regression Information
4.3-beta (I didn't try earlier)
⏯ Playground Link
Playground link with relevant code
💻 Code
type Ctor<T = {}> = new (...args: any[]) => T
function FooMixin<C extends Ctor>(Base: C) {
return class Foo extends Base {
#foo = 123
test(foo: Foo) {
console.log(foo.#foo)
}
}
}
class Cat extends FooMixin(Object) {}
class Dog extends FooMixin(Object) {}
const c = new Cat
c.test(new Dog) // Should there be a type error here, perhaps?
🙁 Actual behavior
No type error, but only a runtime error.
🙂 Expected behavior
There should perhaps also be a type error, if that's possible.
Mixin docs
The TypeScript Mixin documentation advertises that people can use #private fields with class-factory mixins:
// Mixins may not declare private/protected properties // however, you can use ES2020 private fields
This may lead people to the try them and they'll have this issue.
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza con el TypeScript Playground enlazado y reproduce el ejemplo de mixin que incluye campos #private, FooMixin, Cat y Dog. Lee el comportamiento de la comprobación de tipos en torno a la identidad de los campos privados y determina qué diagnóstico, si corresponde, debería producirse para c.test(new Dog); el trabajo requiere acordar una semántica y contar con la cobertura de regresión correspondiente.
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
- 5/5
- Tiempo estimado
- Más de una semana
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 30/100