У меня есть функция с одним общим параметром c, но с двумя параметрами функции. Когда я использую «String Literal Type», два параметра функции могут иметь разные значения:
function func2<T extends 'A' | 'B'>(x: T, y: T): void { }
func2('A', 'A'); // OK
func2('A', 'B'); // OK, why?
func2('A', 'C'); // ERR
Но мне нужно, чтобы x
и y
были одинаковыми, как в примере с классами:
class A { public a;}
class B { public b;}
class C { public c;}
function func1<T extends A | B>(x: T, y: T): void { }
func1(new A(), new A()); // OK
func1(new A(), new B()); // ERR
func1(new A(), new C()); // ERR
Есть ли способ, чтобы x
и y
имели одинаковое значение с "String Literal Type"?