Как написать перегруженный метод с различными типами возвращаемых данных в TypeScript? - PullRequest
0 голосов
/ 08 июня 2018

Я хочу создать метод, такой как "attr", где вы можете использовать его для получения или установки атрибута элемента html, передавая только имя атрибута, который вы хотите, или имя и значение, которое вы хотите установить,В jQuery это будет выглядеть так:

$('#awesome-element').attr('cool-attr'); // this will return the current value of cool-attr.
$('#awesome-element').attr('cool-attr', 'cool-value'); //this will set the value of cool-attr and return a jquery object for chaining.  

Я также хочу, чтобы машинопись показывала правильный тип возвращаемого значения в зависимости от того, как он используется.

1 Ответ

0 голосов
/ 08 июня 2018

Это называется перегрузкой метода, и в машинописном тексте это делается путем предоставления списка сигнатур методов.

public attr(name: string):string;
public attr(name: string, value:{}):jQuery;
public attr(name: string, value?:{}):string|jQuery{
    //if we dont have a value we need to return a string as it means we are getting the attribute
    if(value === undefined){
        /*logic for getting the attribute goes here*/
        return "";
    }
    //else we are setting a value so we will return this for chaining
    /*logic for setting the attribute goes here*/
    return this;
}
...