2017-06-20 84 views
1

是否可以声明某个类没有实现它们而具有某些函数?Typescript:声明函数而不实现它们

我需要这个,因为我创建了一个类,然后传递给一个js框架,增加了一些功能。我希望能够在不重新实现这些功能的情况下调用这些功能,重定向或投射或任何其他功能。

例子:

//example class 
class AppComponent { 
    constructor() {} 
} 

//create class 
var comp: AppComponent = new AppComponent(); 

//hand over to framework 
fw.define("Component", comp); 

//now I want to be able to call the added functions such as: 
comp.setModel(/*some model*/); 
+0

我想你可以使用这些方法的'interface'并调用'fw.define'可以输入到再次返回该接口(只是给你'comp'的对象,但你可以将它分配给一个类型化的第二个变量)。或者只是将你的'comp'投射到那个界面(可能通过'any')。 – Thilo

+0

不幸的是'define'不会返回任何东西。这就是为什么我把它转换为在d.ts文件中定义的'sap.ui.core.mvc.Controller'(框架SAPUI5)。最简单的方法是将两个 –

+1

“声明一个类具有某些功能而不实现它们”:这就是[抽象类](https://www.typescriptlang.org/docs/handbook/classes.html)对于 –

回答

2

你可以声明函数没有实现它。

//example class 
class AppComponent { 
    constructor() { } 
    setModel:() => void; 
} 

//create class 
var comp: AppComponent = new AppComponent(); 

//hand over to framework 
fw.define("Component", comp); 

//now I want to be able to call the added functions such as: 
comp.setModel(/*some model*/); 
+0

这就是我需要的,谢谢。但是有没有箭头功能的方式? –

+0

它是TypeScript声明函数的方式。 – Rodris

+0

但它声明它为一个箭头函数,所以如果我想覆盖它派生类中,我也必须使用箭头函数。 (这会导致框架问题,因为它调用另一个'this'的函数而不是类实例'this'。在箭头函数中'this'绑定到类实例) –