¿Cómo se reescribiría esta clase en un objeto simple?
class ExampleClass { firstPropery: number = 0; secondProperty!: string; async exampleMethod(): Promise<void> { const { secondProperty } = await SomeHelperClass.exampleRequest(); this.secondProperty = secondProperty; } }yo creo que es algo parecido a esto
interface IExample { firstProperty: number; secondProperty: string; exampleMethod: () => Promise<void>; } const Example: IExample = { firstProperty: 0, exampleMethod: async (): Promise<void> => { const { secondProperty } = await SomeHelperClass.exampleRequest(); ... } } Pero, ¿cómo configurar la secondProperty a través del exampleMethod de ejemplo? En el método de clase, solo puedo escribir this.secondProperty = ... , lo que no puedo hacer en el objeto simple.
Mi segunda pregunta es, con la clase haría un nuevo objeto como este const newObject = new ExampleClass(); . Con la forma de objeto simple, ¿cómo haría una nueva instancia de objeto?
¡Cualquier ayuda es apreciada con mucho gusto!
En el método de clase, solo puedo escribir
this.secondProperty = ..., lo que no puedo hacer en el objeto simple.
En realidad puedes. No importa si está definido en una clase o en un objeto literal, exampleMethod sigue siendo un método y cuando se llama como example.exampleMethod() tendrá su this punto para example . Sin embargo, no puede usar una función de flecha para definirlo ; use la sintaxis del método en su lugar:
const example: IExample = { firstProperty: 0, async exampleMethod(): Promise<void> { const { secondProperty } = await SomeHelperClass.exampleRequest(); ... } }Con la clase haría un nuevo objeto como este
const newObject = new ExampleClass();. Con la forma de objeto simple, ¿cómo haría una nueva instancia de objeto?
Escribes el código una y otra vez. O usa Object.assign para copiar el método en un nuevo objeto. O coloca el objeto literal dentro de una función a la que puede llamar varias veces.