如何在全局命名空间(对象)上公开函数时保留函数的类型定义?

时间:2017-01-30 07:16:46

标签: typescript typescript-typings typescript2.0

基本上我不想导入lodash函数是每个文件。我想在一些全局命名空间(例如L)上公开它们。我不想导入整个lodash库,但只导入少量函数。我正在尝试跟踪事情,但后来我放弃了类型支持。

interface Lod {
  head: Function
}

interface Window {
  L: Lod;
}

import head = require('lodash/head');

window.L = {
  head: head
}

所以现在当我使用head()然后IDE给我智能感知支持(显示错误,因为没有参数传递,但我应该给出一个数组)并且我从typescript中得到编译错误,说我将不正确的参数传递给head(是正确的)。

但是当我使用window.L.head()时,我没有从intellisense得到任何帮助(没有错误)和打字稿也没有在编译时给出任何错误(这是错误的,我应该得到错误。)

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

当您直接使用[bar1:20, bar2:10]时,编译器可以检查其中的定义,这就是智能感知工作的原因,并且您会收到错误。

但是你对head的定义是Lod.head,这就是为什么编译器可以传递任何参数。

你应该这样做:

Function
相关问题