我有一个 Interface find ,其中包含方法 cal();
类a1和a2实现了该接口。 a1 返回数字,a2 返回字符串。我如何定义一个接口来解决我的问题。
下面是所提到内容的片段。
interface Ifind {
cal() : string;
}
class a1 implements Ifind{
public cal():string{
return "10";
}
}
class a2 implements Ifind{
public cal(): number{
return 12;
}
}
class main{
private obj;
constructor() {
this.obj = new a1();
var p = this.obj.cal();
alert(p)
}
}
在 TypeScript Playground 中 http://www.typescriptlang.org/play/#src=interface%20Ifind%20%7B%0D%0A%20%20%20%20cal()%20%3A%20string%3B%0D%0A%7D%0D%0A%0D%0Aclass%20a1%20implements%20Ifind%7B%0D%0A%20%20%20%0D%0A%20%20%20%20public%20cal()%3Astring%7B%0D%0A%20%20%20%20%20%20%20%20return%20%2210%22%3B%0D%0A%20%20%20%20%7D%0D%0A%7D%0D%0A%0D%0Aclass%20a2%20implements%20Ifind%7B%0D%0A%20%20%20%20public%20cal()%3A%20number%7B%0D%0A%20%20%20%20%20%20%20%20return%2012%3B%0D%0A%20%20%20%20%7D%0D%0A%7D%0D%0A%0D%0Aclass%20main%7B%0D%0A%20%20%20%20private%20obj%3B%0D%0A%0D%0A%20%20%20%20constructor()%20%7B%0D%0A%20%20%20%20%20%20%20%20this.obj%20%3D%20new%20a1()%3B%0D%0A%20%20%20%20%20%20%20%20var%20p%20%3D%20this.obj.cal()%3B%0D%0A%20%20%20%20%20%20%20%20alert(p)%0D%0A%20%20%20%20%7D%0D%0A%7D
您可以使界面通用。
// Edited for naming
interface Find<T> {
cal() : T;
}
class A1 implements Find<string> {
cal(): string {
return "10";
}
}
class A2 implements Find<number> {
cal(): number {
return 12;
}
}
对上面代码的一些评论。
TypeScript 作为 JavaScript 的超集,拥有一流的函数,这使得上面的代码变得非常丑陋和不惯用。
直接写一个函数会好很多。
function a1() {
return "10";
}
function a2() {
return 12;
}
当然,您的实际代码可能会更复杂,但如果您的接口只有一个成员,并且该成员是一个函数,则只需使用函数即可。
我还编辑了样式代码。具体来说,类型和类名称都应该是帕斯卡卡塞德.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)