Aurelia CLI & TypeScript & MomentJS

Não estou conseguindo que Aurelia (CLI), TypeScript & MomentJS funcionem juntos. Vi soluções para os problemas do Aurelia & Moment, mas eles não usam o Aurelia CLI.

Aqui está o que estou fazendo no momento:

Novo projeto Aurelia usando o Aurelia CLI:

au new 

Eu seleciono TypeScript em vez de Babel.

Instale o momento

npm install moment --save

Isso instala o Moment 2.4.1. Eu posso encontrá-lo (incluindo o moment.d.ts) em node_modules.

Editar aurelia.json

Acrescento "momento" a "dependências":

Use Moment em app.ts

Os problemas começam quando agora tento importar o Moment no app.ts.

import { moment } from 'moment';

Isso gera erro: "Módulo" o: / dev / spikes / amoment / node_modules / moment / moment "não possui nenhum membro exportado 'moment'

Alterar a caixa corrige este erro:

import { Moment } from 'moment';

Mas neste momento estou totalmente preso. Ao tentar usar o momento (ou momento), sempre recebo o erro "Não é possível encontrar o nome 'momento'. Aqui está o app.ts atual que está fornecendo o erro" Não é possível encontrar o nome 'momento' ":

import { Moment } from 'moment';

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

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

A importação parece ser o problema. Alguma ideia de como contornar isso?

Atualizar

Depois de corrigir o app.ts para ter a seguinte aparência, a coisa agora é compilada. Mas ele fornece "TypeError: Não é possível ler a propriedade 'formato' de indefinido" quando executado.

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')
  }
}

Atualizar

Com base no último erro, parece que o autoinject não estava funcionando sem o @autoinject. Adicionamos isso e o erro muda: "TypeError: moment.format não é uma função".

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

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

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

questionAnswers(2)

yourAnswerToTheQuestion