我的看法是,使用模型定义对象似乎使它们变得僵硬并且容忍更改的可能性降低,从而使将来更容易破坏应用程序并增加代码行而毫无收获。例如,我可以有一个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] 删除。
我来说两句