microsoft / microsoft/TypeScript
No compile error thrown when `this` referenced before call to `super` completes
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Go
- Estrellas
- 111k
- Forks
- 14.3k
- Merge medio
- 2 d 4 h
- PR fusionados (30 d)
- 132
Descripción
TypeScript Version:
1.8.9
Code
JSFiddle: https://jsfiddle.net/kitsonk/fs9t96ep/
TS Playground: http://goo.gl/X7cgvV
class A {
constructor(fn: () => void) {
fn.call(this);
}
foo: string = 'foo';
}
class B extends A {
constructor() {
super(() => {
console.log(this);
});
}
bar: string = 'bar';
}
const b = new B();
Expected behavior:
Typescript should guard against the use of this as the call to super has not completed. Thus it should not compile.
Actual behavior:
Typescript compiles this successfully. It works fine when the target is set to es5 but breaks the browser when target is set to es6.
Error is: VM89:55 Uncaught ReferenceError: this is not defined
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 la reproducción de TypeScript 1.8.9 del issue, usando el TS Playground o JSFiddle enlazado, y compara la compilación con los destinos ES5 y ES6. Rastrea cómo el compilador gestiona this dentro del callback pasado a super; el trabajo estará terminado cuando se rechace el caso no válido de ES6, mientras se siga admitiendo el uso válido del constructor.
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
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100