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.
