我可以将Typescript函数参数定义为具有布尔值或字符串类型吗?

时间:2014-07-28 08:15:14

标签: typescript

我有这个功能:

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的值?

3 个答案:

答案 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仅适用于类方法或常规函数。