我遇到了一些麻烦,如何在界面中定义构造函数。我可能完全误解了一些东西。但是我已经搜索了很长一段时间的答案,我找不到与此相关的任何内容。带构造签名的打字稿接口如何工作?
如何实现的打字稿类如下界面:
interface MyInterface {
new (...) : MyInterface;
}
安德斯·海尔斯伯格创建包含在这个video(大约14分钟)与此类似的界面。但在我的生活中,我无法在课堂上实现这一点。
我可能误解了一些东西,我没有得到什么?
编辑:
澄清。随着“新(...)”我的意思是“任何事情”。我的问题是,我不能让即使这个工作的最基本的版本:
interface MyInterface {
new() : MyInterface;
}
class test implements MyInterface {
constructor() { }
}
这不是编制我,我得到“类‘测试’声明接口‘MyInterface的’,但没有实现:键入“ MyInterface'需要一个构造签名,但是当试图编译它时,Type'test'缺少一个“。
编辑:
所以研究这个更多的给出的反馈后。
interface MyInterface {
new() : MyInterface;
}
class test implements MyInterface {
constructor() => test { return this; }
}
是无效的TypeScript,这并不能解决问题。您不能定义构造函数的返回类型。它会返回“测试”。以下签名: class test { 构造函数(){} } 似乎是“new()=> test”(通过将粘贴的代码悬停在在线编辑器中的“class”上而获得)。这就是我们想要的和我认为会是的。
任何人都可以提供这样的例子或类似的东西,它实际上编译?
编辑(再次...):
所以我可能已经想出了一个主意,为什么它有可能在一个界面来定义这一点,但不可能在打字稿class.The以下工作落实:
var MyClass = (function() {
function MyClass() { }
return MyClass;
})();
interface MyInterface {
new() : MyInterface;
}
var testFunction = (foo: MyInterface) : void => { }
var bar = new MyClass();
testFunction(bar);
因此,这是唯一的打字稿的功能,让你的JavaScript接口?还是有可能在TypeScript中实现它,而不必使用JavaScript实现类?
对不起,提前不正确的反馈。我还在寻找,老实说,我最好的猜测是ctor构造不应该能够返回一个类型,并且在界面中指定一个类型的能力可能是一个错误。 – asawyer
@asawyer是的,它似乎很奇怪。然而,即使Anders Hejlsberg会在官方视频中使用一些无法使用的视频,这也更加陌生。 – Nypan
我在codeplex网站上发布了一个问题。 http://typescript.codeplex.com/discussions/403413 – asawyer