【发布时间】:2017-06-26 16:16:24
【问题描述】:
我有一个带参数的方法。我希望 Typescript 验证传入的对象(在 typescript 编译时,我理解运行时是另一种动物)只满足一个允许的接口。
例子:
interface Person {ethnicity: string;}
interface Pet {breed: string;}
function getOrigin(value: Person ^ Pet){...}
getOrigin({}); //Error
getOrigin({ethnicity: 'abc'}); //OK
getOrigin({breed: 'def'}); //OK
getOrigin({ethnicity: 'abc', breed: 'def'});//Error
我意识到 Person ^ Pet 不是有效的 Typescript,但这是我想尝试的第一件事,而且看起来很合理。
【问题讨论】:
-
我认为您正在寻找的是Type Guards。 AFAIK TypeScript 不支持独占类型。
-
对于希望在界面的所有键中只保留一个属性的人,我建议使用oneOf
标签: typescript