我有这个功能:
network = (action: boolean): void => {
if (action) {
this.action = action;
this.net = true;
this.netd = true;
} else {
this.action = null;
this.net = false;
this.netd = false;
}
}
有没有一种方法可以在typescript中定义该操作可以具有boolean OR string的值?
答案 0 :(得分:2)
是。只需使用function
代替var
:
function network(action:boolean):void;
function network(action:string):void;
function network(action: any): void {
if (action) {
this.action = action;
this.net = true;
this.netd = true;
} else {
this.action = null;
this.net = false;
this.netd = false;
}
}
network(''); //okay
network(true); // okay
network(12); // ERROR!
它被称为函数重载,你也可以为成员函数执行此操作。
答案 1 :(得分:2)
您必须以经典的JavaScript方式获取参数类型:
network = (action: any): void => {
if (typeof action === 'string')
// action is a string
else
// action is a boolean
}
为了声明有效类型,functions can be overloaded:
function myFunc(action: boolean): void;
function myFunc(action: string): void;
function myFunc(action: any): void {
if (typeof action === 'string')
// action is a string
else
// action is a boolean
}
myFunc('abc'); // ok
myFunc(false); // ok
myFunc(123); // error
答案 2 :(得分:0)
我不相信你可以为一个声明的函数和分配给这样的变量,不; Typescript overloads仅适用于类方法或常规函数。