【问题标题】:Object creation using class vs interface in Typescript (Angular 5 ) vs Java and C#在 Typescript (Angular 5) 与 Java 和 C# 中使用类与接口创建对象
【发布时间】:2018-05-12 03:57:57
【问题描述】:

我想了解使用接口与类在 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>;

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

【问题讨论】:

    标签: angular class typescript object interface


    【解决方案1】:
    Typescript 中的

    更像 Java 和 C# 中的类。它们实际上正在编译为 JavaScript 原型。

    接口只是编译时的东西。它们仅用于编译器强制静态类型。在编译的代码中,您不会从 Typescript-Interfaces 中看到任何内容。

    由于模型通常只是用来定义数据结构,因此我将 Typescipt-Interfaces 用于我的模型。

    【讨论】:

    • 我一直在努力理解这个概念,但你的解释很清楚。可以说通过在 typescript 中声明接口,与具有额外功能的类相比,编译为 javascript 的代码会更少吗?当我们想要定义代表对象的模型来添加或撤消数据时,在应用程序中使用模型接口是更好的选择吗?
    • 是的 typescript 中的接口仅用于 typescript 编译器。在 javascript 中,你只有一个简单的对象,没什么特别的。它只是为您添加静态类型,您知道该对象将具有该属性。是的,对于移动数据,接口是完美的东西,因为它们不需要任何方法。只是定义数据的结构
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-26
    • 2018-07-16
    • 1970-01-01
    • 2015-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多