Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 函数中的参数使用多个接口中的一个_Javascript_Typescript - Fatal编程技术网

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感谢您改进了这个问题!现在,这是一些该死的魔术,非常感谢!欢迎)现在这是一些该死的魔法,非常感谢!(欢迎你)