为什么导出函数定义(tree.d.ts文件)中不存在ITreeArgs?
interface ITreeArgs {
mayHaveChildren: bool;
}
export function(args: ITreeArgs); <- The name 'ITreeArgs' does not exist in the current scope
这两个都有效:
export function c(args: ITreeArgs); <- adding name works!
export function (args); <- removing type works!
答案 0 :(得分:2)
我这样做(在dojo.d.ts文件中):
module "dojo/on" {
function (target: Element, type: string, listener: (e: Event) => void);
}
然后我像这样导入它:
import on = module("dojo/on");
并将此模块用作纯函数,如下所示:
on(this.goButton, "click", this.ongo.bind(this));
答案 1 :(得分:1)
您需要为您的函数命名,使其成为有效的语法 - 这是真正的错误。
ITreeArgs
可用,只需添加名称即可。
interface ITreeArgs {
mayHaveChildren: bool;
}
export function functionName(args: ITreeArgs) {
//function body
}
我不确定你想要省略功能名称的原因是什么?
更新:要在接口上声明构造函数,请使用:
interface ITreeArgs {
new (myArg: string);
}
要在定义文件中的类上声明构造函数,您可以使用:
declare class MyClass {
constructor(myArg: ITreeArgs);
}
无法在模块上声明构造函数。
在语言规范中,它表示您可以在declare
文件中省略.d.ts
关键字 - 但实际上我发现如果有人没有发现文件,它会让事情变得非常明确扩展
答案 2 :(得分:0)
名称要求仅用于导出,因为Typescript将添加代码
namespace.function_name = ...
所以不清楚为什么有人想匿名出口东西:)
但是例如,如果你想从另一个函数返回类型化的匿名函数,你可以这样做。
function foo() {
return function(bar:string):string { return bar; }
}