我有这样的界面(有效的TypeScript)
interface IPerson {
(name: string, age: number): IPerson,
getSomething(): string
}
我想在课堂上实现:
class Person implements IPerson {
constructor(private something: string) {
}
getSomething(): string {
return this.something;
}
}
如何实施(name: string, age: number): IPerson
会员?
答案 0 :(得分:1)
这是一种功能类型。你应该这样实现......
interface SearchFunc {
(source: string, subString: string): boolean;
}
let mySearch: SearchFunc;
mySearch = function(source: string, subString: string) {
let result = source.search(subString);
return result > -1;
}
我不知道一个类是否可能直接实现它。
检查打字稿手册功能类型http://www.typescriptlang.org/docs/handbook/interfaces.html
答案 1 :(得分:1)
var person = ((): IPerson => {
var x: any = function (name: string, age: number): IPerson {
return this;
}
x.getName = function () {
return "NAME";
}
return x;
}
);
.... JS ....
var person = (function () {
var x = function (name, age) {
return this;
};
x.getName = function () {
return "NAME";
};
return x;
});
答案 2 :(得分:1)
您发布的界面描述了具有特定签名的函数,该函数还有一个名为getSomething
的附加方法
在描述为Hybrid Types的文档中。
我认为没有办法创建实现它的类,你基本上只需要一个工厂函数来创建实现这个接口的实例:
function createPerson(name: string, age: number): IPerson {
let person = function(newName: string, newAge: number) {
return createPerson(newName, newAge);
} as IPerson;
person.getSomething = function () {
return `${ name }: ${ age }`;
}
return person;
}
但这是一个奇怪的定义。