TS的interface

PeChen
  • 270
interface Demo {
    (str: string): void; 
}
//   (str: string): void;  这个代表什么意思,求个例子表述一下
回复
阅读 563
3 个回答

在 JavaScript 中,函数除了可调用之外还可以有属性。但是,函数类型表达式语法不允许声明属性。如果我们想用属性来描述一些可调用的东西,我们可以在对象类型中写一个调用签名:

type DescribableFunction = {
  description: string;
  (someArg: number): boolean;
};
function doSomething(fn: DescribableFunction) {
  console.log(fn.description + " returned " + fn(6));
}

// 调用
const foo: DescribableFunction = (n: number) => {
  return n > 5
}
// 没有下面这句,const foo会报错
foo.description='fn'

doSomething(foo)

如果把 DescribableFunction 中的 description 去掉,就和你的是一样了
参考 call-signatures

他描述了 demo 这样的一个函数,表示有一个参数他的类型是 string , 并且没有返回值

interface Demo {
    (str: string): void;
}
const demo: Demo = (str) => {

}

函数类型 (进去搜函数类型)
表示传入str形参类型为string,void没有返回

宣传栏