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

在d.ts文件中对回调内部的值强制类型为on

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

    我有jquery插件,它的prompt函数接受callack函数,只有setprompt参数:

    代码如下:

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

    是否可以将d.ts文件中的参数强制为string,以便在不向回调传递用户add类型的情况下传递10时显示错误。

    在我的D.TS文件中,我有:

    type setStringFunction = (value: string) => void;
    type cmdPrompt = (setPrompt: setStringFunction) => void;
    interface Cmd extends JQuery {
        prompt(cmdPrompt): Cmd;
        prompt(): cmdPrompt;
    }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Titian Cernicova-Dragomir    7 年前

    你的代码已经做了你想要它做的,你只是有一个小错误,你指定 prompt(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
    });