可以指定接口的屬性,但不能強制執行是否使用getter和setter方法,就像這樣:
interface IExample {
Name: string;
}
class Example implements IExample {
private _name: string = "Bob";
public get Name() {
return this._name;
}
public set Name(value) {
this._name = value;
}
}
var example = new Example();
alert(example.Name);
在這個例子中,接口不強制類使用getter和setter,我可以使用一個屬性來代替(下面的例子) - 但是接口應該隱藏這些實現細節,因爲它是對調用代碼的承諾,可以調用它。
interface IExample {
Name: string;
}
class Example implements IExample {
// this satisfies the interface just the same
public Name: string = "Bob";
}
var example = new Example();
alert(example.Name);
最後,=>
不允許類方法 - 你可以start a discussion on Codeplex,如果你覺得有一個燃燒的情況下使用它。這裏有一個例子:
class Test {
// Yes
getName =() => 'Steve';
// No
getName() => 'Steve';
// No
get name() => 'Steve';
}
也有一個EC5 Shim你可以使用'=>'來定義這樣的類方法:'name =(a:string)=> this._name;'但在輸出JS中,它將在類函數內部定義,而不是擴展其原型對象。 – orad