【问题标题】:Typescript function overloads too big files打字稿函数重载太大的文件
【发布时间】:2019-02-09 13:20:19
【问题描述】:

有没有办法导入/导出函数重载或其他一些策略来减少文件中实际函数的噪音?例如。一个包含大约 250 行代码的文件,如果我将重载保存在同一个文件中,它肯定会变成 500+。

目前接口和类型函数不是一个选项,因为它们 require casting 用于重载目的时

【问题讨论】:

    标签: typescript function overloading


    【解决方案1】:

    使用接口和箭头函数

    // a.ts
    export interface Foo {
      // overloads here...
      (a: string): string
      (): any
    }
    
    // b.ts
    import {Foo} from './a'
    
    const foo: Foo = (...args: any[]) => ...
    
    foo()
    

    附:您不能使用经典函数来做到这一点,因为在这种情况下,函数重载必须放在实现之前。

    【讨论】:

    • 接口和类型需要强制转换(类型断言)。 Example。所以,我使用了带有 function 关键字的重载。
    • @ZenVentzi 您的观点不明确。使用变量而不是函数有什么问题?最后你以同样的方式使用它foo()。不,我的回答中没有单一的强制转换或类型断言。
    • 使用变量没有什么“错误”,你没有抓住重点。 “接口和类型需要强制转换(类型断言)”。这就是我要避免的。同样,这也没有任何“错误”。
    • @ZenVentzi 我再说一遍,没有 no 强制转换或类型断言。类型断言是这样的:123 as 123{} as any。您所看到的只是设置变量foo 的类型。那有什么问题?你为什么要避免它?
    • 请检查上面链接中的代码。使用接口/类型,如果不进行强制转换,您将无法解决问题所在。你的函数太简单了,还没写完
    猜你喜欢
    • 2020-05-20
    • 2017-01-04
    • 2019-07-04
    • 1970-01-01
    • 1970-01-01
    • 2019-02-07
    • 2022-06-11
    • 2019-01-24
    相关资源
    最近更新 更多