使用接口创建实例

新手上路,请多包涵

在我的 Angular 2 TypeScript 应用程序中,我定义了一个接口而不是一个类来允许可选参数。

据我所知,我应该在某个地方通过以下方式实现接口:

导出类 myClass 实现 myInterface { … }

然后通过 new(...) 实例化它。

我想知道这是否是正确的方法(在 Angular 2 中)还是有 更简单/更好的方法

另外, 我应该将实现放在 哪里,在我使用它的组件(.ts)中,接口在哪里或哪里?

原文由 dragonmnl 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 576
2 个回答

你可以这样做。您也可以只创建一个实现接口的对象,例如:

 interface foo {
    one: number;
    two: string;
}

const bar: foo = { one: 5, two: "hello" };

如果你想使用一个类,你可以把它放在你想要的地方。如果它与组件紧密耦合,则可以将其放在那里。一般来说,我希望类是松耦合的,所以我把它们放在自己的文件中。

原文由 rgvassar 发布,翻译遵循 CC BY-SA 3.0 许可协议

虽然公认的答案很好,但 请注意这样的解决方案,因为它们允许您省略接口中定义的必需属性:

 const instance1 = {} as MyInterface;
const instance2 = <MyInterface>{};


其他一些强大而紧凑的替代方案包括:

1)实例化一个实现接口的匿名类:

 new class implements MyInterface {
  one = 'Hello';
  two = 'World';
}();

  1. 或者,使用如下效用函数:
 export function impl<I>(i: I) { return i; }

impl<MyInterface>({
  one: 'Hello';
  two: 'World';
})

原文由 Stephen Paul 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进