Aurelia CLI y TypeScript y MomentJS

No consigo que Aurelia (CLI) y TypeScript & MomentJS trabajen juntos. He visto soluciones para los problemas de Aurelia y Moment pero no usan la CLI de Aurelia.

Esto es lo que estoy haciendo en este momento:

Nuevo proyecto de Aurelia con Aurelia CLI:

au new 

Selecciono TypeScript en lugar de Babel.

Instalar momento

npm install moment --save

Esto instala Moment 2.4.1. Puedo encontrarlo (incluido el momento.d.ts) en node_modules.

Editar aurelia.json

Agrego "momento" a "dependencias":

Use Moment en app.ts

Los problemas comienzan cuando ahora trato de importar Moment en app.ts.

import { moment } from 'moment';

Esto da error: "Módulo" o: / dev / spikes / amoment / node_modules / moment / moment "no ha exportado ningún miembro 'moment'

Cambiar la carcasa corrige este error:

import { Moment } from 'moment';

Pero en este punto estoy totalmente atascado. Cuando trato de usar moment (o Moment), siempre recibo el error "No se puede encontrar el nombre 'moment'. Aquí está el app.ts actual que da el error" No se puede encontrar el nombre 'moment' ":

import { Moment } from 'moment';

export class App {
  message = 'Hello World!';

  hello() : string {
    return moment.format();
  }
}

La importación parece ser el problema. ¿Alguna idea de cómo solucionar esto?

Actualizar

Después de arreglar app.ts para que se vea como sigue, la cosa ahora se compila. Pero da "TypeError: No se puede leer la propiedad 'formato' de indefinido" cuando se ejecuta.

import { Moment } from 'moment';
import { autoinject } from "aurelia-framework";

export class App {
  message: string;
  moment: Moment;

  constructor(moment: Moment) {
    this.moment = moment;
    this.message = this.moment.format('MMMM Do YYYY, h:mm:ss a')
  }
}

Actualizar

Según el último error, parece que autoinject no funcionaba sin @autoinject. Así que agregó eso y el error cambia: "TypeError: moment.format no es una función".

import { Moment } from 'moment';
import { autoinject } from "aurelia-framework";

@autoinject
export class App {
  message: string;
  moment: Moment;

  constructor(moment: Moment) {
    this.message = moment.format();
  }
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta