@Pipe({ name: 'values', pure: false })
export class ValuesPipe implements PipeTransform {
transform(value: any, args: any[] = null): any {
return Object.keys(value).map(key => value[key]);
}
}
看來,類繼承ES6中不支持。是否有替代方案不需要對超類進行逆向工程?
@Pipe({ name: 'values', pure: false })
export class ValuesPipe implements PipeTransform {
transform(value: any, args: any[] = null): any {
return Object.keys(value).map(key => value[key]);
}
}
看來,類繼承ES6中不支持。是否有替代方案不需要對超類進行逆向工程?
ES6確實有類繼承。班級由extends
繼承。
當您使用implements
時,您需要對接口進行類型檢查。如果你想檢查類型,你應該使用Typescript - 如果你不需要類型檢查,那麼你不需要implements
。使用實現不會影響輸出代碼 - 它只是在編譯期間進行類型檢查。
例如在打字稿:
class myClass{
public myID:number
constructor(){
}
talk(){
console.log("hi there");
}
}
class newClass {
public myID:number;
talk(){
console.log("Hi from new Class");
}
}
class newClassImplements implements myClass {
public myID:number;
talk(){
console.log("Hi from new Class");
}
}
newClass
和newClassImplements
結果都以完全相同的編譯後的相同的JavaScript。 implements
的版本只是要求編譯器確保它具有與myClass
相同的接口,如果它沒有在編譯時出現錯誤。
在上面的示例中ValuesPipe
不是繼承自PipeTransform
它只是實現接口。如果你不需要類型檢查,你應該能夠寫出你想要的功能,並忘記實現接口。
Derp。我應該早點想出來。謝謝。 –
編譯打字稿不是一個選項? – Langley
@Langley此答案標有'ecmascript-6'標籤的原因。如果我打算在TS中從頭開始重寫我的整個應用程序,那我就不會問。除此之外,NG2應該是ES6友好的。最終,其他用戶將面向ES6並遇到同樣的問題,所以它不是我的實現專有的。 –
我只是試圖獲得有關你的場景的信息,tsconfig.ts有一個ES6選項的目標,我不知道這是否允許你使用ts而不必重寫你的整個應用程序。 – Langley