У меня возникают проблемы с тем, как работают конструкторы в интерфейсах. Возможно, я совершенно ничего не понимаю. Но я искал ответы на какое-то время, и я не могу найти ничего, что связано с этим.
Как реализовать следующий интерфейс в классе TypeScript:
interface MyInterface {
new ( ... ) : MyInterface;
}
Андерс Хейлсберг создает интерфейс, содержащий нечто подобное этому видео (примерно 14 минут). Но для жизни меня я не могу реализовать это в классе.
Я, наверное, что-то недопонимаю, чего я не получу?
ИЗМЕНИТЬ:
Прояснить. С "новым (...)" я имел в виду "что угодно". Моя проблема в том, что я не могу получить даже самую базовую версию этой работы:
interface MyInterface {
new () : MyInterface;
}
class test implements MyInterface {
constructor () { }
}
Это не компиляция для меня. Я получаю "Тест класса", объявляющий интерфейс "MyInterface", но не реализующий его. Тип "MyInterface" требует наличия сигнатуры конструкции, но при попытке его скомпилировать тип "test" отсутствует ".
ИЗМЕНИТЬ:
Итак, после изучения этого немного больше, учитывая обратную связь.
interface MyInterface {
new () : MyInterface;
}
class test implements MyInterface {
constructor () => test { return this; }
}
Недействительно TypeScript, и это не решает проблему. Вы не можете определить возвращаемый тип конструктора. Он вернет "тест". Подпись: class test { constructor() {} } Кажется, это "новый() = > тест" (полученный путем зависания над "классом" в онлайн-редакторе с помощью только того кода, который вставлен). И это то, что мы хотели бы и что я думал, что это будет.
Может ли кто-нибудь представить пример этого или чего-то подобного там, где он собственно компилируется?
EDIT (снова...):
Итак, я мог бы придумать, почему это можно определить в интерфейсе, но невозможно реализовать в классе TypeScript. Следующие работы:
var MyClass = (function () {
function MyClass() { }
return MyClass;
})();
interface MyInterface {
new () : MyInterface;
}
var testFunction = (foo: MyInterface) : void => { }
var bar = new MyClass();
testFunction(bar);
Итак, это только функция TypeScript, которая позволяет вам взаимодействовать с javascript? Или можно реализовать его в TypeScript без необходимости реализации класса с помощью javascript?