我有图书馆,已经添加了打字稿定义类型,我正在测试是否正确。我有两个函数:set_prompt
和get_prompt
第一个函数接受字符串和函数,并且我想使用get_prompt
的返回值作为函数或字符串:
我有这样的代码:
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;
但是它适用于任何类型,是否可以将类型限制为字符串和JQueryTerminal.ExtendedPrompt
?
答案 0 :(得分:1)
我认为您正在搜索:
function get_prompt<T extends (JQueryTerminal.ExtendedPrompt | string) = string>(): T;