构造函数的声明和实例化

时间:2018-02-07 11:10:24

标签: typescript

如何声明与'myConstructor'中的模式匹配的构造函数?在示例中,编译器在将函数分配给'g'时说:Subsequent variable declarations must have the same type。分配给'g'的功能应该是什么样的?

interface MyType {
    myProperty: string;
}
interface myConstructor {

    new(s: string): MyType
}


var g: myConstructor;

var g = function (s) {
    this.myProperty = s;
}

var c = new g('abc');

1 个答案:

答案 0 :(得分:2)

通常,在TypeScript中,您要编写一个类而不是构造函数:

class MyClass implements MyType {
    myProperty: string;

    constructor(s: string) {
        this.myProperty = s;
    }
}

var c = new MyClass('abc');

然后编译器会将类转换为构造函数以实现浏览器兼容性。使用TypeScript playground,您可以看到编译器输出如下(使用默认选项):

var MyClass = /** @class */ (function () {
    function MyClass(s) {
        this.myProperty = s;
    }
    return MyClass;
}());
var c = new MyClass('abc');

或者,如果您真的想编写实现接口的构造函数,请查看official documentation中的ClockConstructor示例。