index.d.ts文件中的函数重载

时间:2019-01-15 09:51:50

标签: typescript

已解决:重启VS代码有助于:blush:

我有一个用es6(不是打字稿)编写的模块,我想向其中添加ts声明文件。模块仅导出一个可以这样调用的函数:

<script type="text/javascript">
function findTotal(){
    var arr = document.getElementsByName('qty');
    var tot=0;
    for(var i=0;i<arr.length;i++){
        if(parseInt(arr[i].value))
            tot += parseInt(arr[i].value);
    }
    document.getElementById('total').value = tot;
}

</script>

这是我现在拥有的声明文件:

fn(A, C)
fn(A, B, C)

我以为打字稿会检测到此函数的两个变体(2或3个args),但是在我正在使用此模块的项目中,ts会抱怨如果我尝试/// <reference types="node" /> /// <reference types="graphql" /> declare module 'graphql-add-middleware' { type middlewareFn = (root: any, args: any, context: any, info: any, next: () => Promise<any>) => Promise<any>; export function addMiddleware ( schema: GraphQLSchema, fn: middlewareFn, ): void; export function addMiddleware ( schema: GraphQLSchema, path: string, fn: middlewareFn, ): void; }; 。它说有3个参数。如果我addMiddleware(schema, fn),它不会抱怨。

我的声明文件怎么了?我如何使它工作?

更新-请参见VS代码显示的屏幕:

enter image description here

编辑:您可以自己进行测试-这是软件包,已发布到npm:https://github.com/alekbarszczewski/graphql-add-middleware

0 个答案:

没有答案