【发布时间】:2015-09-17 17:18:46
【问题描述】:
在打字稿中,我理解how to specify the shape of an external library。考虑只需要库中的一个函数或库只是一个(可能重载)函数(例如this library for the function merge)的情况。必须使用模块名称 -dot- 函数名称来调用函数相当冗长:
在文件merge.d.ts:
declare module "merge" {
export function merge(o: Object, ...args: Object[]): Object;
export function merge(isDeep: boolean, o: Object, ...args: Object[]): Object
}
在一些测试文件中:
///<reference path="merge.d.ts"/>
import merge = require('merge');
merge.merge({x: 1}, {y: 2});
有没有一种不同的方法可以有效地将第 3 行的 merge.merge 替换为 merge,同时仍在检查类型?
【问题讨论】:
-
其实这段代码根本行不通。即使它在编译时进行类型检查,但在运行时,
merge.merge是未定义的。我认为问题在于mergenpm 只是一个函数而不是一个模块。
标签: interface module typescript