Javascript 如何更改函数以接受不同类型作为参数
在下面的示例中,Javascript 如何更改函数以接受不同类型作为参数,javascript,typescript,function,prototype,Javascript,Typescript,Function,Prototype,在下面的示例中,myFoo将接受类型为Boolean的参数 function myFoo(value:Boolean) { } 我的问题是,是否可以使用prototype将myFoo函数更改为接受多个类型 例如,函数myFoo(值:Boolean | string){} 注意:myFoo是一个全局函数,不能直接编辑 已更新 位于不同文件中的全局函数 export declare class MyGlobalClass<T> extends Observable<T> i
myFoo
将接受类型为Boolean
的参数
function myFoo(value:Boolean) { }
我的问题是,是否可以使用prototype将myFoo
函数更改为接受多个类型
例如,函数myFoo(值:Boolean | string){}
注意:myFoo
是一个全局函数,不能直接编辑
已更新
位于不同文件中的全局函数
export declare class MyGlobalClass<T> extends Observable<T> implements Observer<any> {
myFunc(value: Boolean): void;
}
但它会抛出类型错误。因为myFunc只接受布尔值
。我需要解决这个问题 将类型更改为“任意”
请注意,您将丢失Typescript为此提供的所有类型检查,因为您基本上是在告诉Typescript您希望允许您的“value”参数可以是任何类型。您不能在运行时更改Typescript类型,因为它们在代码运行时不存在。您所说的“更改”是什么意思?您的用例是什么?是否尝试将字符串传递给原始函数?是否覆盖全局变量?您只想重新声明函数的类型吗?是的,您可以这样做,它将被称为松散类型的函数声明。请注意,这些类型只是发展援助。一旦传输到vanilla javascript(在浏览器中执行的版本),此类型信息将丢失。它将与
函数myFoo(value){}
一样好,但您仍然可以使用typeof
构造来检查传递参数的运行时类型。我正在尝试使用accepts only Boolean将字符串传递给源函数,我需要尽快修复小补丁。我不建议使用函数myFoo(value){}
。正如我所写的,这就是它将有效传输到的内容。类型信息将在运行时丢失。我所说的“丢失”是指知道给定函数接受的参数类型,通过在运行时查看函数对象,我们无法确定它接受的参数类型。但是当函数实际使用参数调用时,我们可以使用typeof
查看参数类型,然后根据传递的类型执行条件执行。有关如何实现所需补丁类型的详细信息,请参见我的答案。
function myFoo(value: Boolean|string) {
if (typeof value === 'string') {
//do string patch
} else {
//whatever
}
}
function myFoo(value:any) { }
function myFoo(value: Boolean|string) {
if (typeof value === 'string') {
//do string patch
} else {
//whatever
}
}