【问题标题】:Typescript double identifier on declaration file声明文件上的打字稿双标识符
【发布时间】:2019-06-02 17:55:22
【问题描述】:

我写了一个类函数,如果它不是类的实例,则返回 myClass 的实例。

function myClass(){
    if ( this instanceof myClass )
        return myClass();
}

因此,new myClass() 和 myClass() 都获得了 myClass 的实例。

myClass(); // return myClass instance
new myClass(); // return myClass instance

但是,我不知道如何在 typescript 声明文件中声明上述类。

如果我这样写:

class myClass{}
function myClass(): myClass;

这将是重复标识符错误。

有什么方法可以解决这个问题吗?谢谢!

【问题讨论】:

    标签: node.js typescript


    【解决方案1】:

    使用不同的名称

    // Uppercase first letter!
    class Greeter {
        greeting: string;
        constructor(message: string) {
            this.greeting = message;
        }
    }
    
    // lowercase first letter
    function getGreeterInstance() {
        return new Greeter("Hello");
    }
    

    说明

    • TypeScript 有它的约定,如果你遵循它们,你会省去很多麻烦。
    • 使用描述性/不言自明的名称。 myClass 对谁阅读代码不够清楚。
    • 为您的定义使用不同的名称。

    注意事项

    请务必查看 classes 和 functions 上的 TypeScript 文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-12
      • 2018-03-11
      • 2017-02-16
      • 2013-08-20
      • 1970-01-01
      • 1970-01-01
      • 2021-08-20
      相关资源
      最近更新 更多