我有一个名为param的参数函数,如下所示:
function x(param: One | Two) {
//do something
}
interface One {
value: IValue,
name: string,
id: number
}
interface Two {
value: IValue2,
name: string,
id: number,
selected: boolean
}
我可以使用相同的参数,两个不同的接口吗?谢谢!
答案 0 :(得分:4)
您可以,并且您的参数语法正确!作为参考,TypeScript将其称为union type。
使用它们的主要警告是,您只能访问所有类型的公共成员 - 例如,您的界面都包含name
,value
和id
,因此您能够在你的功能中使用这些。但是,只有interfaceTwo
有selected
成员,因此无法使用。
顺便说一句,我不知道这个示例是否是你刚刚输入的内容,所以你可能已经知道这一点,但你的接口没有正确定义 - 你需要使用{{ 1}}关键字并以分号结束行。它也是一种给出interface
类型名称的惯例:
TitleCase