我想了解如何使用接口(interface)vs类在angular 2中创建模型。在Java或C#中创建模型时,我们使用模型类来表示在应用程序中传递并因此进行强类型化的数据模型。

//C#
public class Movie
{
   public int ID { get; set; }
   public string Title { get; set; }
   public DateTime ReleaseDate { get; set; }
   public string Genre { get; set; }
   public decimal Price { get; set; }
}

大多数时候,我们会根据我们的要求坚持使用这种模型将数据绑定(bind)到数据库。

我看到了使用类似方法的示例和教程。
//Java
public class Movie
{
   public int ID;
   public String Title;
   public Date ReleaseDate;
   public String Genre;
   public float Price;
}

然后,我开始使用angular和Typescript进行Web开发。我发现有些喜欢使用接口(interface)来表示他们的模型,而有些喜欢坚持使用类。
//Class
export class Movie {
    public string id;
    public string title;
    public Date ReleaseDate;
    public string Genre;
    public number
}
//Interface
export interface Movie {
    public string id;
    public string title;
    public Date ReleaseDate;
    public string Genre;
    public number
}

但是,当涉及到创建和使用模型时,对我来说,它就像是同一种。
 //declare
let movie = new Movie();
movie: Movie = new Movie();
movies: Movie[];
amovie: Movie;
//reactive
obsMovies: Observable<Movie[]>;
obsAMovie: Observable<Movie>;

我想知道在 typescript 中使用接口(interface)或类时是否有区别。我对接口(interface)的理解只是共享功能的类的契约,而类可以是任何可以想象的东西。

最佳答案

Typescript中的类更像Java和C#中的类。实际上,它们已被编译为JavaScript原型(prototype)。

接口(interface)只是编译时的事情。它们仅用于编译器强制进行静态类型化。在编译的代码中,您的Typescript接口(interface)不会显示任何内容。

由于实际上常常只有模型来定义数据结构,因此我在模型中使用Typescipt接口(interface)。

09-17 08:28