Typescript: this.property dentro de una función da error de tipo implícitamente any. No se puede llamar a new Object();
Estoy tratando de integrar TypeScript en mi camino de aprendizaje y entender las diferencias con JavaScript.
Hasta ahora pude resolver todos los problemas, pero me quedé atrapado en algo que parece bastante básico.
function Person() {
// ERROR: this implicitly has type any because it does not have a type annotation
this.name = 'brad';
}
// ERROR: new expression, whose target lacks a construct signature, implicitly has an any type
const brad = new Person();
console.log( brad );
He probado algunas posibles soluciones:
deshabilitado sin this implícito en tsconfig:
esto funcionaría para eliminar el primer error, pero el que está en
new Person()permaneceestablecer esto: cualquier en los paréntesis del parámetro (con noimplicitthis en verdadero)
function Person( this: any ) { // ERROR: unexpected any. specify a different type- intenté usar una función flecha para guardarlo
- intentó usar el constructor dentro de la función Person
Eché un vistazo al manual oficial de TypeScript, pero simplemente no parece que encuentre nada que se relacione con mi problema actual.
¿Por qué el código anterior funciona en JS mientras que en TypeScript no parece funcionar?
Respuesta #1
Typescript se está quejando aquí de que no sabe en la declaración cuál es el tipo de this y qué debería devolver
Podemos resolver esto de 2 maneras -
Solución 1: (Preferida)
// Convert this constructor function to Person
class Person {
name = 'brad'
}
const brad = new Person();
console.log( brad );
Solución 2: (Hacky)
interface Person1 {
name: string
// All properties of Person goes here
}
const Person1 = function (this: Person1){
this.name = 'brad'
} as any as { new (): Person1 }
const foo = new Person1();
console.log(foo);
Patio de código
