Я пытаюсь реализовать файл определения TS DefinitelyTyped для класса JS, который имеет разные определения в зависимости от того, как он создается. Определения четко определены и не изменятся после создания экземпляра.
Пример:
var a = new MyClass("foo");
console.log(a.a);//"a"
console.log(a.b);//"b"
console.log(a.c);//"c"
console.log(a.d);//"undefined"
console.log(a.e);//"undefined"
console.log(a.f);//"undefined"
var b = new MyClass("bar");
console.log(b.a);//"undefined"
console.log(b.b);//"undefined"
console.log(b.c);//"c"
console.log(b.d);//"d"
console.log(b.e);//"e"
console.log(b.f);//"f"
Я бы хотел, чтобы определение TS выглядело примерно так:
interface myInterface{
c:string;
}
class MyClass("foo") implements myInterface{
a:string;
b:string;
c:string;
}
class MyClass("bar") implements myInterface{
c:string;
d:string;
e:string;
f:string;
}
Будем очень признательны за любые указатели
РЕДАКТИРОВАТЬ: Уточнение: я не могу изменить MyClass
Кроме того, существует множество различных способов создания экземпляра MyClass
, однако все они хорошо известны и определены заранее. Мы также можем предположить, что нам не нужно беспокоиться о несуществующем варианте MyClass
.
Кроме того, MyClass
лучше всего описывать как фабрику, которая разрешает доступ к базе данных; поэтому new MyClass("foo")
создаст объект, позволяющий получить доступ к таблице foo в базе данных, где имена полей теперь являются свойствами созданного MyClass
объекта.
class MyClass("foo") implements myInterface{
неверен. - person   schedule 06.08.2016?
), как вd?: string;
. - person   schedule 06.08.2016