ember.js - Emberjs og Typescript Oppsett


Jeg har veldig vanskelig for å få TypeScript og Ember til å fungere sammen. Jeg har fått med alle definisjonsfilene i DefinitelyTyped, og jeg gikk gjennom ToDo-veiledningene på Ember-guiden på nettsiden. Jeg prøver å konvertere JS til TypeScript og se hva som er den beste måten å sette opp prosjektet på, men jeg antar at jeg ikke forstår TypeScript-definisjonene så godt.

Hvis jeg gjør:

/// <reference path="typings/ember.d.ts" />

var App = Ember.Application.create();

App er en type '{}', og jeg kan ikke få tilgang til 'Routers' for å gjøre neste linje i guiden

App.Router.map( ... )

Det beste jeg fant på nettet var dette som ikke fungerer med den nåværende skrivingen.

Jeg har sett på typescript ember-app-kit, men det hjelper egentlig ikke siden det knapt inkluderer noe typescript, og oppsettet deres er knapt som ember-guidene. Jeg trenger bare å bli pekt i riktig retning. Takk, folkens.

Svar #1

Jeg er ikke kjent med Ember, men fra å ha sett på ember.d.ts, kan jeg se at create() er definert som en statisk generell funksjon på objektet:

static create<T extends {}>(arguments?: {}): T;

Så da bør du kunne få bedre typeinformasjon ved å sende en faktisk type:

var App = Ember.Application.create<Ember.Application>();

Jeg ser imidlertid også at ember typedef ikke inkluderer et "Router"-medlem i applikasjonsklassen, og selv om det gjorde det, definerer ikke Router-klassen map(). Jeg klarte å få det til å fungere ved å lage en utvidet typedefinisjon:

// ./EmberExt.d.ts
/// <reference path="typedef/ember/ember.d.ts" />

declare class RouterExt extends Ember.Router {
    map: ItemIndexEnumerableCallbackTarget;
}

declare class ApplicationExt extends Ember.Application {
    Router: RouterExt;
}

Og deretter referere til det fra min kombinerte ruter/applikasjonsfil:

/// <reference path="typedef/ember/ember.d.ts" />
/// <reference path="./EmberExt.d.ts" />

var App = Ember.Application.create<ApplicationExt>();
App.Router.map(function () {
    this.resource('todos', { path: '/' });
});

Etter å ha gjort dette, kompilerer og laster den uten feil, selv om den egentlig ikke gjør noe (noe jeg tror er greit for denne fasen av gjennomgangen)

Svar #2

Fullstendige og stort sett nøyaktige typedefinisjoner for Ember.js er nå tilgjengelige for installasjon fra npm på @types/ember, @types/ember-data og så videre, for øyeblikket alle via Definitely Typed-prosjektet.

Ember CLI-integrasjon er tilgjengelig gjennom ember-cli-typescript-tillegget. Den enkleste måten å konfigurere et Ember.js-prosjekt med TypeScript på er å kjøre ember install ember-cli-typescript i roten av Ember.js-prosjektet ditt. Dette vil automatisk generere en tsconfig.json som håndterer Embers konvensjonelle prosjektoppsett korrekt (for applikasjoner, tillegg og in-repo-tillegg). Det vil også installere type-definisjonene for alle kjerne-Ember-prosjekter automatisk.

Relaterte artikler