tsh*_*001 2 typescript angular angular5 angular6
我看待它的方式,用模型定义对象似乎使它们变得僵硬并且变化容忍度更小,从而使得将来更容易破坏应用程序并添加代码行而无法获得.例如,我可以有一个get方法,它从API返回一个视频对象,并将其编程为Any或定义的模型.
/model/video.ts
export interface Video {
// my code
}
Run Code Online (Sandbox Code Playgroud)
/pages/videos.ts
getAllVideos(): Promise<Video> {
// my code
}
Run Code Online (Sandbox Code Playgroud)
与
/pages/videos.ts
getAllVideos(): Promise<Any> {
// my code
}
Run Code Online (Sandbox Code Playgroud)
我看待它的方式.更少的代码行,更少的复杂性,更少的文件和更少的刚性是一件好事.为什么要定义模型?
...让以后更容易破解应用程序......
这与使用Typescript向JS引入接口时发生的情况完全相反.
假设您有一个接受具有特定形状的对象的函数,就像这样
function giveMeStuff(obj) {
return obj.foo.toLowerCase();
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我们没有办法,以确保当我们调用giveMeStuff
我们实际上是通过其拥有的对象foo
属性,它也需要一个字符串.
如果一个新的开发人员(或者你自己,几个星期后)出现并调用giveMeStuff(12)
,代码将在运行时中断.
相反,这是当你有一个接口时会发生的事情.
function giveMeStuff(obj: IObjectWithFoo): string {
return obj.foo.toLowerCase();
}
interface IObjectWithFoo {
foo: string;
}
Run Code Online (Sandbox Code Playgroud)
现在,当你试图调用时giveMeStuff(12)
,编译器会警告你不能这样做,因为函数期望一种不同的参数.
归档时间: |
|
查看次数: |
981 次 |
最近记录: |