[英]Typescript: Is it possible to evaluate generic type into string literal?
[英]Typescript String Literal Type in generic function
我有一個帶有一個通用參數的 function,但有兩個 function 參數。 當我使用“字符串文字類型”時,兩個 function 參數可以有不同的值:
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
相同,就像 Classes 的示例一樣:
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
與“字符串文字類型”具有相同的值?
Aluan Haddad 的評論解決了這個問題:
參數都匹配約束,並且順序無關緊要,因此會進行適當的推斷,但是您可以編寫 func2(x: T, y: U)。 這使得第二個約束取決於第一個
現在兩個參數只能具有相同的值:
function func2<T extends 'A' | 'B', U extends T>(x: T, y: U): void { }
func2('A', 'A'); // OK
func2('A', 'B'); // ERR
func2('A', 'C'); // ERR
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.