Oak*_*Oak 8 ember.js typescript
我正在努力让打字稿和余烬一起工作.我得到了绝对打字的所有定义文件,然后我在网站上的Ember指南中浏览了ToDo.我正在尝试将js转换为打字稿,看看设置项目的最佳方式是什么,但我想我不太了解打字稿定义.
如果我做:
/// <reference path="typings/ember.d.ts" />
var App = Ember.Application.create();
Run Code Online (Sandbox Code Playgroud)
应用程序是一种"{}",我无法访问"路由器"来执行指南的下一行
App.Router.map( ... )
Run Code Online (Sandbox Code Playgroud)
我在网上找到的最好的事情就是这个不与当前的打字工作.
我已经看过这些打字稿的ember-app-kit,但它并没有真正帮助,因为它几乎不包含任何打字稿,而且它们的设置几乎不像ember指南.我只需指向正确的方向.多谢你们.
我不熟悉Ember,但是通过检查ember.d.ts,我可以看到create()被定义为对象的静态泛型函数:
static create<T extends {}>(arguments?: {}): T;
Run Code Online (Sandbox Code Playgroud)
那么你应该能够通过传递一个实际类型来获得更好的类型信息:
var App = Ember.Application.create<Ember.Application>();
Run Code Online (Sandbox Code Playgroud)
但是,我也看到ember typedef在应用程序类中不包含"Router"成员,即使它确实如此,Router类也没有定义map().我能够通过创建扩展类型定义来使其工作:
// ./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;
}
Run Code Online (Sandbox Code Playgroud)
然后从我的组合路由器/应用程序文件中引用它:
/// <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: '/' });
});
Run Code Online (Sandbox Code Playgroud)
这样做之后,它编译并加载没有错误,虽然它实际上没有做任何事情(我认为这对于演练的这个阶段是好的)
| 归档时间: |
|
| 查看次数: |
3346 次 |
| 最近记录: |