我正在为 KeyboardJS 构建声明源文件. API 是从加载 JavaScript 文件时实例化的静态对象 (KeyboardJS) 引用的。 API 的一些方法嵌套在其他方法下。例如:
KeyboardJS.clear(keyCombo);
和
KeyboardJS.clear.key(key);
这是我的接口(interface)定义:
interface KeyboardJSStatic {
enable(): void;
disable(): void;
activeKeys(): string[];
on(keyCombo:string, onDownCallback?: (keyEvent: Event, keysPressed: string[], keyCombo: string) => {}, onUpCallback?: (keyEvent: Event, keysPressed: string[], keyCombo: string) => {}): KeyboardJSBinding;
clear(keyCombo: string): void;
clear.key(keyName: string): void;
locale(localeName: string): KeyboardJSLocale;
locale.register(localeName: string, localeDefinition: KeyboardJSLocale): void;
macro(keyCombo:string , keyNames: string[]): void;
macro.remove(keyCombo: string): void;
key: KeyboardJSKey;
combo: KeyboardJSCombo;
}
Visual Studio 2012 的 TypeScript 插件在 clear.key 行上生成错误,建议在句号所在的位置使用分号。有没有人用类似的场景构建定义文件?谢谢!
最佳答案
您可以像这样在类型上声明调用签名:
interface KeyboardJSStatic {
// ...
clear: {
(keyCombo: string): void; // Call signature
key(keyName: string): void; // Method
};
// ...
}
var n: KeyboardJSStatic;
n.clear('a'); // OK
n.clear.key('b'); // OK
关于javascript - 如何在 TypeScript 声明源文件中声明嵌套函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14369408/