我正在使用https://github.com/borisyankov/DefinitelyTyped/中的backbone.d.ts。
打字稿版本0.9.1
问题:我无法正确定义Backbone.Collection:
代码:
/// <reference path='./backbone/backbone.d.ts'/>
import Backbone = require("backbone");
class User extends Backbone.Model {
getName() : string {
return "User Name";
}
}
class Users extends Backbone.Collection {
model = User;
}
var users = new Users();
var firstUser = users.create({});
console.log(firstUser.getName());
尝试编译:{{1}} 我收到了错误:
tsc ./users.ts -m amd
如何解决这个问题?
答案 0 :(得分:1)
可以使用泛型重写定义文件: https://gist.github.com/lavrton/7226521
然后,每次创建主干集时,都必须包含模型:
var users = new Backbone.Collection<User>();
或更好更清洁:
class Users extends Backbone.Collection<User> {
model = User;
}
var users = new Users();
现在,typescript将为每个收集方法提供正确的模型类型。 你可以为Backbone.View做同样的事情。
Offtopic提示: 最好将模型属性写入原型:
class Users extends Backbone.Collection<User> {
}
Users.prototype.model = User;