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