我看到它的方式,用模型定义对象似乎使它们变得僵硬并且变化容忍度更小,从而使得将来更容易破坏应用程序并添加代码行而无法获得。例如,我可以使用get方法从API返回视频对象,并将其编程为Any或定义模型。
/model/video.ts
export interface Video {
// my code
}
/pages/videos.ts
getAllVideos(): Promise<Video> {
// my code
}
VS
/pages/videos.ts
getAllVideos(): Promise<Any> {
// my code
}
我看待它的方式。更少的代码行,更少的复杂性,更少的文件和更少的刚性是一件好事。为什么要定义模型?
答案 0 :(得分:7)
...让以后更容易破解应用程序......
这与使用Typescript向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)
时,编译器会警告您不能这样做,因为该函数期望有不同类型的参数。
答案 1 :(得分:1)
在某些情况下,更重要的是具有明确定义的界面。这取决于您正在履行的要求,应用程序的风险等等。
例如,在特定项目中,强制将该方法与该对象类型一起使用可能更为重要,从而减少了错误概率。