【问题标题】:Export default explanation TypeScript导出默认说明 TypeScript
【发布时间】:2021-06-01 22:58:55
【问题描述】:

总的来说,我对 JS、TS 和 node 非常陌生。我遇到了https://github.com/santiq/bulletproof-nodejs,我正在查看一段我不理解的代码,所以我想知道是否有人可以解释部分代码。 这个项目有普通的 app.ts 作为入口点,在里面导入 express 并使用加载器在https://github.com/santiq/bulletproof-nodejs/blob/master/src/loaders/express.ts设置 express

export default ({ app }: { app: express.Application }) => {

这个导出是什么,换句话说,导出 { app }: { app: express.Application } 是什么意思,为什么它们在花括号中?

【问题讨论】:

    标签: javascript node.js typescript express


    【解决方案1】:

    它导出一个箭头函数,该函数接受一个具有express.Application 类型的app 属性的对象,它通过解构将app 属性提取出来。它没有声明返回类型,因此要么没有返回类型,要么依赖 TypeScript 从函数的代码中推断出它(这通常很好)。也可以这样写:

    const fn = ({ app }: { app: express.Application }) => {
        // ...
    };
    export default fn;
    

    导出是默认导出,这意味着您使用默认导出导入语法导入:

    import anyNameYouLike from "./the-module";
    

    而不是命名导出导入语法 (import { something } from ...)。

    【讨论】:

    • 现在更有意义了,非常感谢您的回答:)
    【解决方案2】:

    这会导出一个接受单个类型参数的函数:

    { app: express.Application }
    

    稍微分解一下,让我们将其声明为具体类型:

    type ExpressProps = { app: express.Application }
    

    然后重新声明函数:

    export default ({ app }: ExpressProps) => {
    

    现在...为什么参数 {app} 在花括号中?

    这是一个argument destructure,允许我们在函数体中使用app。如果没有解构,我们将不得不:

    export default (props: ExpressProps) => { // use props.app
    

    【讨论】:

      猜你喜欢
      • 2020-04-30
      • 2022-12-07
      • 2017-02-01
      • 1970-01-01
      • 2020-03-22
      • 2019-04-02
      • 2017-11-12
      • 2019-04-03
      • 2018-10-14
      相关资源
      最近更新 更多