我有两个文件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');
}
但现在我指的是两次类型信息,我不想做...
答案 0 :(得分:0)
我认为您正在混合类型和默认参数等。
a
的类型为Function
。 a
本身不是一种类型。默认参数可以像这样指定:
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');
}