Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 这个类型定义实际上意味着什么?_Typescript_Typescript Typings - Fatal编程技术网

Typescript 这个类型定义实际上意味着什么?

Typescript 这个类型定义实际上意味着什么?,typescript,typescript-typings,Typescript,Typescript Typings,几天前我开始学习TS,当我在互联网上寻找用TS完成的express服务器时,我发现这是Middleware参数的类型定义,我实际上并不理解它。我试图在Typescript文档中搜索它,但没有找到任何类似的内容 <!-- language: lang-ts --> function initializeMiddlewares (middlewares: { forEach: (arg0: (middleware: any) => void) =&

几天前我开始学习TS,当我在互联网上寻找用TS完成的express服务器时,我发现这是Middleware参数的类型定义,我实际上并不理解它。我试图在Typescript文档中搜索它,但没有找到任何类似的内容

<!-- language: lang-ts -->

    function initializeMiddlewares (middlewares: {
            forEach: (arg0: (middleware: any) => void) => void
        }): void {
            middlewares.forEach(middlewares => {
                this.app.use(middlewares);
            })
    }


函数初始化Middleware(中间件:任意):void{
middleware.forEach(middleware=>{
console.log(中间件)
此应用程序使用(中间件);
})
}

此类型定义表示,
InitializeMiddleware
是一个标记参数(
Middleware
)的函数,该参数返回
void
Middleware
是一个具有
forEach
方法的函数;
forEach
方法是一个标记参数(
arg0
)的函数,它是另一个接受
any
中间件
)的函数;内部函数返回void,外部函数也返回void

更改内容时出现的错误可能会让人感到困惑,因为名称
middleware
被隐藏;它指的是
forEach
中的内部名称。如果要使用隐式any,则需要更改
tsconfig.json
“noImplicitAny”:false

逐点分解有助于理解复杂类型:

function initializeMiddlewares (
  // middlewares argument
  middlewares: {
    // forEach method which should exist on the middlewares argument
    forEach: 
      // inner function
      arg0: (middleware: any) => void)
    // forEach return
    => void,
  }
// initializeMiddlewares return
): void
{
  middlewares.forEach(middlewares => {
    this.app.use(middlewares);
  })
}

非常感谢你。有了你的解释,就更容易理解了
<!-- language: lang-ts -->

    function initializeMiddlewares(middlewares: any): void {
        middlewares.forEach(middlewares => {
            console.log(middlewares)
            this.app.use(middlewares);
        })
    }

function initializeMiddlewares (
  // middlewares argument
  middlewares: {
    // forEach method which should exist on the middlewares argument
    forEach: 
      // inner function
      arg0: (middleware: any) => void)
    // forEach return
    => void,
  }
// initializeMiddlewares return
): void
{
  middlewares.forEach(middlewares => {
    this.app.use(middlewares);
  })
}