() => Promise 到底是个什么鬼

今天在项目代码里看见这么一段

export default function asyncComponent(getComponent: () => Promise<any>) {

….

}

主要懵在这个参数上

asyncComponent(getComponent: () => Promise<any>)

冒号左边 getComponent 应该是参数名

冒号右边 () => Promise<any> 应该是这个参数的类型

但是() => Promise<any>到底是个什么类型呢?

写个例子试一试

Main.ts

import { Service } from "./Service";

 

var test: () => Service;

test = () => {

  var p = new Service();

  return p;

};

console.log(typeof test);

Service.ts

export class Service {}

上面这个例子的运行结果是

所以() => Service 表示的是一个function, function的返回值是Service的对象

那么

export default function asyncComponent(getComponent: () => Promise<any>)

表示

1. 有一个方法叫 asyncComponent

2. asyncComponent方法的参数是 getComponent

3. getComponent 返回值的类型是 Promise<any>

稍微做一下改动可以看的更清楚