已解决:重启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代码显示的屏幕:
编辑:您可以自己进行测试-这是软件包,已发布到npm:https://github.com/alekbarszczewski/graphql-add-middleware