如何在打字稿中导入默认导出函数的输入

时间:2015-12-23 09:15:40

标签: typescript

我有两个文件a和b。 a正在导出这样的函数:

export default (param1: string) => { return true; }

b正在导入这样的文件:

import a from './a';

然后我想使用以下的打字:

function bla(aFn: a) {
  aFn('hello');
}

编译器给我一个cannot find name a。如何获得导出函数的输入?有效的是我为这个函数创建和导出一个接口(文件a):

export interface a {
  (param1: string): boolean;
}

export default (param1: string) => { return true; }

B:

import { a } from './a';

function bla(aFn: a) {
  aFn('hello');
}

但现在我指的是两次类型信息,我不想做...

2 个答案:

答案 0 :(得分:0)

我认为您正在混合类型和默认参数等。

a的类型为Functiona本身不是一种类型。默认参数可以像这样指定:

function bla(aFn = a) {
  aFn('hello');
}

如果您需要aFn具有类似于a的签名,则您必须指定该签名或为其创建界面。

function bla(aFn: (s: string) => boolean) {
  aFn('hello');
}

或者...

interface a { (s: string): boolean; }
function bla(aFn: a) {
  aFn('hello');
}

答案 1 :(得分:0)

Louy在某种程度上是正确的。您需要使用typeof来获取类型信息:

import a from './a';
function bla(aFn: typeof a) {
  aFn('hello');
}