代码之家  ›  专栏  ›  技术社区  ›  jcubic

函数返回typescript中的两种类型

  •  1
  • jcubic  · 技术社区  · 7 年前

    我有一个库,我添加了typescript定义类型,我正在测试它是否正确。我有两个功能: set_prompt get_prompt 第一个函数接受字符串和函数,我想使用 获取\u提示 作为函数或字符串:

    var fn: (cb: (prompt: string) => void) => void =  term.get_prompt();
    var prompt: string = term.get_prompt();
    

    它在第二个代码上抛出错误

    我的d.ts文件的代码如下:

    declare namespace JQueryTerminal {
        type setStringFunction = (value: string) => void;
        type ExtendedPrompt = ((this: JQueryTerminal, setPrompt: setStringFunction) => (void | PromiseLike<string>));
    }
    interface JQueryTerminal<TElement = HTMLElement> extends JQuery<TElement> {
        set_prompt(prompt: JQueryTerminal.ExtendedPrompt | string): JQueryTerminal;
        get_prompt(): JQueryTerminal.ExtendedPrompt;
        get_prompt(): string;
    }
    

    | string 结束时 ExtendedPrompt

    是否可以将函数的返回值用于两种不同的类型?

    我试过使用泛型:

    get_prompt<T = string>(): T;
    

    但它适用于任何类型,是否可以将类型限制为string和 JQueryTerminal.ExtendedPrompt ?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Julian    7 年前

    我想你在找这个:

    function get_prompt<T extends (JQueryTerminal.ExtendedPrompt | string)  = string>(): T;
    
    推荐文章