我想了解使用interface vs class在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; }
}
大多数时候,我们会根据我们的要求坚持使用这种模型将数据绑定到数据库。
我使用相同的方法看到示例和教程。
//Java
public class Movie
{
public int ID;
public String Title;
public Date ReleaseDate;
public String Genre;
public float Price;
}
然后,我开始使用angular和typescript进行Web开发。我发现有些人喜欢使用界面来表示他们的模型而其他人喜欢坚持使用类。
//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>;
我想知道在打字稿中使用接口或类时有什么区别。我对接口的理解只是对共享函数的类的契约,而类可以是任何可以想象的东西。
答案 0 :(得分:10)
类更像是Java和C#中的类。实际上他们正在编译成JavaScript原型。
接口只是编译时的事情。它们仅供编译器强制静态输入。在编译的代码中,您不会从Typescript-Interfaces中看到任何内容。
由于模型通常仅用于定义数据结构,因此我使用的是Modelscipt-Interfaces模型。