使用Typescript(Angular 5)中的类vs接口与Java和C#进行对象创建

pho*_*att 9 interface class object typescript angular

我想了解使用接口vs类来创建角度为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; }
}
Run Code Online (Sandbox Code Playgroud)

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

我看到使用相同方法的示例和教程.

//Java
public class Movie
{
   public int ID;
   public String Title;
   public Date ReleaseDate;
   public String Genre;
   public float Price;
}
Run Code Online (Sandbox Code Playgroud)

然后,我开始使用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
}
Run Code Online (Sandbox Code Playgroud)

但是,在创建和使用模型时,它对我来说看起来是一样的.

 //declare
let movie = new Movie();
movie: Movie = new Movie();
movies: Movie[];
amovie: Movie;
//reactive
obsMovies: Observable<Movie[]>;
obsAMovie: Observable<Movie>;
Run Code Online (Sandbox Code Playgroud)

我想知道在打字稿中使用接口或类时有什么区别.我对接口的理解只是对共享函数的类的契约,而类可以是任何可以想象的东西.

Cra*_*ppy 10

Typescript中的更像是Java和C#中的类.他们实际上正在编译成JavaScript原型.

接口只是编译时的事情.它们仅供编译器强制静态输入.在编译的代码中,您不会从Typescript-Interfaces中看到任何内容.

由于模型通常仅用于定义数据结构,因此我使用的是Modelscipt-Interfaces.