代码之家  ›  专栏  ›  技术社区  ›  nickf

禁止在TypeScript中显示类型的别名

  •  2
  • nickf  · 技术社区  · 4 年前

    我可以看到,在某些/大多数情况下,这是您想要的,但有时创建别名仅仅是因为源文件中的完整类型表达式重复或繁琐,但在外部,别名是一个不透明的名称,这无助于用户了解如何实现它。

    1 回复  |  直到 4 年前
        1
  •  3
  •   Titian Cernicova-Dragomir    4 年前

    Typescript使用一些启发式方法来决定何时保留类型别名或何时将其展开。我们对它没有太多的控制,而且启发式可能会根据反馈和错误从一个版本更改到另一个版本。

    也就是说,我们有时可以利用编译器的功能来强制扩展类型别名。例如,此代码将显示所需的工具提示,但需要更改签名:

    type AnAlias = (a: number) => string;
    
    type FunctionSignature<T extends (...a: any) => any> = {} & ((...a: Parameters<T>) => ReturnType<T>)
    
    declare function fn(a: FunctionSignature<AnAlias>): void
    
    fn()
    

    Playground Link

    tooltip imgage