use*_*230 8 typescript marionette
我在Typescript中使用Backbone.Marionette.我写了自己的Marionette类型描述.
var ProviderSpa = new Backbone.Marionette.Application();
ProviderSpa.addRegions({
'servicesRegion': "#services-offered"
});
ProviderSpa.servicesRegion.show();
Run Code Online (Sandbox Code Playgroud)
我的问题是addRegions有一个副作用,即向ProviderSpa添加属性,TypeScript不知道,因此它抱怨"属性'servicesRegion'不存在于'Backbone.Marionette.Application'类型的值上.
如何告诉TypeScript关于类型实例的这些动态属性添加?
小智 0
TypeScript 类型系统无法考虑运行时效果,因为 TypeScript 类型仅存在于编译时。您必须在编译时正确键入 ProviderSpa。也许最简单的方法是为 ProviderSpa 创建一个具有 addRegions 和 servicesRegion 类型的接口,这样您就可以执行以下操作:
interface IProviderSpa { servicesRegion: ...; addRegions: ...; };
var ProviderSpa = <IProviderSpa> new Backbone.Marionette.Application();
Run Code Online (Sandbox Code Playgroud)
如果 Marionette 有应用程序的接口类型,您甚至可以像下面这样扩展它:
interface IProviderSpa extends Backbone.Marionette.IApplication { ... }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1939 次 |
| 最近记录: |