强制将值类型键入以在d.ts文件中的回调内进行回调

时间:2018-07-13 11:00:55

标签: typescript callback

我有一个具有提示功能的jQuery插件,该功能接受带有setPrompt作为唯一参数的callack函数:

代码如下:

obj.prompt(function(setPrompt) {
   setPrompt(10);
});

是否可以将d.ts文件中的setPrompt参数强制设置为字符串,以便在传递10而没有向该回调添加用户添加类型时显示错误。

在我的d.ts文件中:

type setStringFunction = (value: string) => void;
type cmdPrompt = (setPrompt: setStringFunction) => void;
interface Cmd extends JQuery {
    prompt(cmdPrompt): Cmd;
    prompt(): cmdPrompt;
}

1 个答案:

答案 0 :(得分:1)

您的代码已经实现了您想要的功能,只是有一个小错误,您指定了prompt(cmdPrompt),这意味着函数具有名为cmdPrompt的参数,而不是类型为cmdPrompt的参数。您只需要将其更改为param: cmdPrompt即可正常使用

type setStringFunction = (value: string) => void;
type cmdPrompt = (setPrompt: setStringFunction) => void;
interface Cmd extends JQuery {
    prompt(param: cmdPrompt): Cmd;
    prompt(): cmdPrompt;
}

let obj!: Cmd;

obj.prompt(function(setPrompt) {
    setPrompt(10); // error
});