Javascript 函数中的参数使用多个接口中的一个
我有这样一个函数:Javascript 函数中的参数使用多个接口中的一个,javascript,typescript,Javascript,Typescript,我有这样一个函数: interface Interface1 { one: string } interface Interface2 { two: string } interface Interface3 { three: string } type ManyInterfacesInOneType = Interface1 | Interface2 | Interface3; function bla(param1: ManyInterfacesInOneType)
interface Interface1 {
one: string
}
interface Interface2 {
two: string
}
interface Interface3 {
three: string
}
type ManyInterfacesInOneType = Interface1 | Interface2 | Interface3;
function bla(param1: ManyInterfacesInOneType) {
}
当我尝试使用像这样的函数,并调用像bla({…})
这样的函数时,它允许我从所有接口输入变量,但我希望函数限制为多个接口中的一个所以我不希望发生这种情况:
bla({one: '', two: '', three: ''});
我还试着做:
function bla<T extends object>(param1: T) {
}
函数bla(参数1:T){
}
但这并不要求泛型类型,因此它甚至没有真正的帮助
有什么想法可以让我这样做吗?可以使用small helper:
接口1{
一:字符串
}
接口2{
二:字符串
}
接口3{
三:弦
}
类型联合=接口1 |接口2 |接口3;
//功劳归于https://stackoverflow.com/questions/65805600/type-union-not-checking-for-excess-properties#answer-65805753
类型UnionKeys=T扩展T?基特:永远不会;
类型为StrictUnionHelper=
T扩展任何
? T&Partial:从不;
类型StrictUnion=StrictUnionHelper
函数bla(参数1:StrictUnion){
}
bla({one:'one'})//好的
bla({one:'one',two:'two'})//错误
,在我的博客中,您可以找到更多实用程序类型的示例,这些示例在实践中非常有用,因为所有这些示例都取自此处(stackoverflow)可以使用small helper:
接口1{
一:字符串
}
接口2{
二:字符串
}
接口3{
三:弦
}
类型联合=接口1 |接口2 |接口3;
//功劳归于https://stackoverflow.com/questions/65805600/type-union-not-checking-for-excess-properties#answer-65805753
类型UnionKeys=T扩展T?基特:永远不会;
类型为StrictUnionHelper=
T扩展任何
? T&Partial:从不;
类型StrictUnion=StrictUnionHelper
函数bla(参数1:StrictUnion){
}
bla({one:'one'})//好的
bla({one:'one',two:'two'})//错误
,在我的博客中,您可以找到更多实用程序类型的示例,这些实用程序类型在实践中非常有用,因为它们都取自此处(stackoverflow)@FZs正如我所说,一种类型中声明了多个接口,我也写了我遇到的问题,您到底需要什么不同的代码或解释?@FZs我添加了更多的代码和示例,希望现在解释得更清楚一点是的,我现在知道了。谢谢你,让我投票吧。但是,我认为我不知道这个问题的解决方法。@FZs感谢您改进了这个问题@FZs正如我所说,它只是在一种类型中声明的多个接口,我也写了我遇到的问题,您需要什么不同的代码或解释?@FZs我添加了更多的代码和示例,希望现在解释得更清楚一些是的,我现在知道了。谢谢你,让我投票吧。但是,我认为我不知道这个问题的解决方法。@FZs感谢您改进了这个问题!现在,这是一些该死的魔术,非常感谢!欢迎)现在这是一些该死的魔法,非常感谢!(欢迎你)