typescript 如何在TypeScritp中两个参数具有不同值的情况下进行类型检查?

drkbr07n  于 2022-11-26  发布在  TypeScript
关注(0)|答案(1)|浏览(168)

请考虑以下代码:

type Country = "usa" | "uk" | "canada";
function match({c1, c2}:{c1:Country, c2: Exclude<Country, c2>}){} //This is error
match('usa', 'usa'); //I want this to be a error
match('uk', 'usa'); //and this be ok

我想强制参数c1和c2在被调用时具有不同的值。

e4eetjau

e4eetjau1#

您可以使用泛型,如下所示:

function match<C extends Country>(c1: C, c2: Exclude<Country, C>){}

但是,只有当参数是文字字符串时,我才能正常工作,因此,如果您计划使用其他东西(如变量)作为参数,它可能不容易使用。

相关问题