Почему я должен использовать интерфейсы (модели) в Typescript / Angular? - PullRequest
0 голосов
/ 11 июня 2018

На мой взгляд, определение объектов с помощью моделей делает их жесткими и менее устойчивыми к изменениям, упрощая работу с приложениями в будущем и добавляя строки кода без выгоды.Например, у меня может быть метод 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
}

То, как я это вижу.Меньше строк кода, меньше сложности, меньше файлов и меньше жесткости - это хорошо.Почему даже определены модели?

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Бывают ситуации, когда важнее иметь четко определенный интерфейс.Это зависит от того, какие требования вы выполняете, от риска приложения и т. Д.

Например, в конкретном проекте может быть более целесообразным использовать этот метод с этим типом объекта, уменьшая вероятность ошибок.

0 голосов
/ 11 июня 2018

... облегчая взлом приложения в будущем ...

Это прямо противоположно тому, что происходит, когда вы вводите интерфейсы для JS с Typescript.

Допустим, у вас есть функция, которая принимает объекты с определенной формой, например

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), компилятор предупредит вас, что вы можетене делайте этого, потому что функция ожидает другого типа аргумента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...