为什么要在Typescript / Angular中使用接口(模型)?

tshm001

我的看法是,使用模型定义对象似乎使它们变得僵硬并且容忍更改的可能性降低,从而使将来更容易破坏应用程序并增加代码行而毫无收获。例如,我可以有一个get方法,该方法从API返回视频对象,并将其编程为Any或定义的模型。

/model/video.ts

export interface Video {
// my code
 }

/pages/videos.ts

getAllVideos(): Promise<Video> {
// my code
}

/pages/videos.ts

getAllVideos(): Promise<Any> {
// my code
}

我的看法。更少的代码行,更少的复杂性,更少的文件和更少的刚性是一件好事。为什么还要定义模型?

虫子

...使将来更容易中断应用程序...

这与将带有Typescript的JS接口引入JS时的情况恰好相反。

假设您有一个函数可以接受具有特定形状的对象,例如

function giveMeStuff(obj) {
  return obj.foo.toLowerCase();
}

在这种情况下,我们无法确保在调用时giveMeStuff实际上传递的是具有foo属性的对象,该属性也必须是字符串。

如果有新的开发人员(或几周后您自己)出现并调用giveMeStuff(12),则代码将在运行时中断。


相反,这是当您具有接口时发生的情况。

function giveMeStuff(obj: IObjectWithFoo): string {
  return obj.foo.toLowerCase();
}

interface IObjectWithFoo {
  foo: string;
}

现在,当您尝试调用giveMeStuff(12)编译器时,会警告您您不能执行此操作,因为该函数期望使用其他类型的参数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么要在Typescript中使用接口

来自分类Dev

为什么要在 Angular 中使用 ValueAccessor?

来自分类Java

为什么要在Java中使用类似的接口?

来自分类Dev

为什么要在模型中使用私有变量?

来自分类Dev

何时在TypeScript / Angular2中使用接口和模型

来自分类Dev

为什么要在AngularJS中使用$ onInit?

来自分类Dev

为什么要在golang中使用组合?

来自分类Java

为什么要在Android中使用RequestQueue?

来自分类Dev

为什么要在Dialogflow中使用动作

来自分类Dev

为什么要在结构中使用malloc?

来自分类Dev

为什么要在FRP中使用行为

来自分类Dev

为什么要在延迟中使用setTimeout

来自分类Dev

为什么要在laravel中使用npm?

来自分类Dev

为什么要在Flux中使用“动作”?

来自分类Dev

为什么要在Flink中使用kafka

来自分类Dev

为什么要在ListView中使用DataTemplate?

来自分类Java

为什么要在类内部声明接口?

来自分类Dev

什么是背景?为什么要在odoo中使用?

来自分类Dev

为什么要在Sharepoint 2013中使用客户端对象模型

来自分类Dev

为什么要在routerLink Angular中放斜线?

来自分类Java

为什么要在堆栈上使用Deque?

来自分类Dev

为什么要在pbuilder上使用sbuild?

来自分类Dev

为什么要在memset上使用bzero?

来自分类Dev

为什么要在命令前使用env?

来自分类Dev

为什么要在Dict上使用HashDict?

来自分类Dev

什么时候以及为什么要在angular4中使用依赖注入令牌

来自分类Javascript

为什么要在JavaScript变量的名称中使用$(美元符号)?

来自分类Dev

为什么要在该程序中使用fflush(stdin)?

来自分类Dev

为什么要在Git中使用core.autocrlf = true?

Related 相关文章

热门标签

归档