page navigationend change angular2 typescript typescript1.6

typescript - navigationend - Cómo estructurar la clase de utilidad



title angular 6 (2)

Hay un par de problemas aquí:

  1. No estás creando una instancia de nada, y doSomething es un método de instancia.
  2. Cuando import * as util , util representa el módulo, no un objeto en él.

Si quieres Util , solo debes importar eso:

import { Util } from ''./util''

A continuación, debe crear una instancia de Util , antes de llamar finalmente al método:

var u = new Util(); u.doSomething("test");

Aquí está su código parchado:

import { Util } from ''./util'' export class MyClass{ constructor() { var u = new Util(); u.doSomething("test"); } }

Dicho todo esto, parece que hay algo extraño en la forma en que usas tus utils. Esta es una opinión totalmente personal, pero no invocaría métodos que "hagan algo", es decir, causen efectos secundarios, en un constructor.

Además, los métodos en Util realmente no parecen tener que estar en esa clase, ya que la clase no tiene un estado del que dependan. Siempre puedes exportar funciones regulares desde un módulo. Si escribiste tu módulo de utils como este:

export function doSomething(val: string) { return val; } export function doSomethingElse(val: string) { return val; }

estaría exportando sus funciones directamente y eludiría la molestia de creación de instancias, y de hecho, su código original funcionaría correctamente como está.

Tengo varias funciones de utilidad. ¿Cuál es la mejor manera de empaquetarlos y luego importarlos?

Esto es lo que estoy tratando de hacer:

import * as util from ''./util'' export class myClass{ constructor() { util.doSomething("test"); } }

Luego en la clase:

export class Util{ doSomething(val: string){ return val;} doSomethingElse(val: string{ return val;} }

El mensaje de error que recibo de VS es "La propiedad doSomething no existe en el tipo util".


Si creas un archivo utils.ts que contiene

export default class Utils { static doSomething(val: string) { return val; } static doSomethingElse(val: string) { return val; } }

Entonces puedes simplificar tu código de cliente de esta manera:

import Utils from ''./utils'' export class MyClass { constructor() { Utils.doSomething("test"); } }