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

Typescript 如何在全局命名空间(对象)上公开函数时保留函数的类型定义?,typescript,typescript-typings,typescript2.0,Typescript,Typescript Typings,Typescript2.0,基本上我不想在每个文件中导入lodash函数。我想在一些全局名称空间中公开它们。我不想导入整个lodash库,但只导入很少的函数。我正在尝试下面的事情,但我松动了类型的支持 interface Lod { head: Function } interface Window { L: Lod; } import head = require('lodash/head'); window.L = { head: head } 所以现在当我使用head时,IDE给了我intelli

基本上我不想在每个文件中导入lodash函数。我想在一些全局名称空间中公开它们。我不想导入整个lodash库,但只导入很少的函数。我正在尝试下面的事情,但我松动了类型的支持

interface Lod {
  head: Function
}

interface Window {
  L: Lod;
}

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

window.L = {
  head: head
}
所以现在当我使用head时,IDE给了我intellisense支持,显示错误,因为没有传递任何参数,但我应该给出一个数组,而且我从typescript中得到编译错误,说我向head传递了不正确的参数,这是正确的

但是当我使用window.L.head时,我没有从intellisenseno错误中得到任何帮助,typescript也没有在编译时给出任何错误,这是错误的,我应该得到错误

非常感谢您的帮助

当您直接使用head时,编译器可以检查其中的定义,这就是intellisense工作的原因,您会遇到错误

但是您对Lod.head的定义是一个函数,这就是为什么编译器可以允许您传递任何参数的原因

您应该这样做:

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

interface Lod {
    head: typeof head
}

你在intellisense中遗漏了哪些信息?如果您没有收到任何编译器错误,那么它应该是好的,您的intellisense应该会发现一些问题。您好@NitzanTomer,谢谢您的关注。若我使用了head'error'、'parameters',那个么我将从命令行上的typescript编译器获得intellisense帮助和错误,这是正确的。但当我使用window.L.head'error','parameters'时,我不会得到错误的intellisense或命令行,因为我传递了错误的参数