如何声明函数的函数属性?

时间:2019-07-21 16:05:17

标签: javascript typescript

我正在尝试为uuidv4模块提供TypeScript模块声明。它基本上导出一个不带参数的函数,并以字符串形式返回UUID。这很容易实现,就像这样:

declare module 'uuidv4' {
  const uuidv4: () => string;
  export default uuidv4;
}

现在,这变得有些棘手,因为在导出的函数上还有另一个函数,称为empty。因此您可以像这样使用它:

import uuid from 'uuidv4';

console.log(uuid());
console.log(uuid.empty());

如何在模块声明中设置第二个?我尝试过这样:

declare module 'uuidv4' {
  const uuidv4: () => string;
  uuidv4.empty: () => string;
  export default uuidv4;
}

但这不起作用,因为TypeScript抱怨

  

类型'()=>字符串'上不存在属性'空'。

我该如何解决?

1 个答案:

答案 0 :(得分:2)

好的,我明白了。实际上,一旦您知道如何做,就很容易了:

declare module 'uuidv4' {
  const uuidv4: {(): string; empty (): string};
  export default uuidv4;
}

就这样?