Я новичок в написании сценария, просто просматривая их учебник и пробовав кодирование на игровой площадке, но обнаружил что-то странное.Любые причины для ввода интерфейса для класса?
Например, этот код:
class foobar implements Ifoobar
{
full: string;
constructor (public foo, public bar)
{
this.full = foo + bar;
}
}
interface Ifoobar
{
foo: string;
bar: string;
}
function test(ifoobar: Ifoobar)
{
return ifoobar.foo + ifoobar.bar;
}
var obj = new foobar("hello", "world");
document.body.innerHTML = test(obj);
работает, если вы положили
class foobar implements Ifoobar
или просто
class foobar
так, что это точка, используя интерфейс, если сам договор не соблюдается?
UPDATE Моя главная задача на самом деле на этой линии:
document.body.innerHTML = test(obj);
это должно бросить ошибку прямо так Foobar не использует реализует Ifoobar и тест (ifoobar: Ifoobar), как указано в аргументе метода должен принимать только Ifoobar. Для меня это похоже на машинопись просто ясно, что foobar реализует Ifoobar, хотя это не так.
Как вы оцениваете сценарий? Какой процесс вы используете для его сборки/проверки? – Dai
@ Дай Я еще не построил/не проверил его, все еще на http://www.typescriptlang.org/Playground и пробовал вещи или два. – kirie
Это основное использование для 'implements ifoobar': http://bit.ly/1FHmopN - это поможет вам убедиться, что Ifoobar имеет правильную структуру (а также предоставляет другим разработчикам информацию об использовании класса« foobar », обеспечивая при этом совместимость с интерфейсом с течением времени). – Fenton