2013-06-21 33 views
5

là có cách gọi một hàm từ baseclass như ghi đè lên.Chức năng gọi kiểu từ lớp cơ sở

Base Class

export class BaseClass { 
    constructor() { 
    //do something asynchronous 
    //than call initialized 
    } 
} 

Inheritance Lớp

export class InheritanceClass extends BaseClass { 
    initialized() { 
    // get called from base class 
    } 
} 

Trả lời

7

Bạn có nghĩa là như thế này:

class Base { 
    constructor(){ 
     setTimeout(()=>{ 
      this.initialized(); 
     }, 1000); 
    } 

    initialized(){ 
     console.log("Base initialized"); 
    } 
} 

class Derived extends Base { 
    initialized(){ 
     console.log("Derived initialized"); 
    } 
} 

var test:Derived = new Derived(); // console logs "Derived initialized" - as expected. 

trình tốt trong Playground (Bỏ qua gạch dưới màu đỏ lẻ trên setTimeout(), mà tôi nghĩ là một lỗi - nó biên dịch và chạy tốt.)

Bạn cần phương pháp có trên Base, nhưng bạn có thể ghi đè nó trong Derived (với hoặc, như trong trường hợp này, không có cuộc gọi đến super.initialized()).

+0

Vì vậy, nếu lớp cơ sở đã nói Động vật và lớp dẫn xuất là Chó, bạn có thể có phương pháp đi bộ, nhưng những gì về Rắn và Chim bạn sẽ có một phương pháp trượt và bay trên lớp động vật của bạn? –

+0

Trường hợp sử dụng khác nhau. Tôi không gợi ý rằng không cần các thành viên trừu tượng trong TypeScript, chỉ câu trả lời này giải quyết chính xác yêu cầu của OP cho khả năng "làm điều gì đó không đồng bộ, sau đó gọi khởi tạo" và "gọi hàm từ baseclass như (presume typo :) ghi đè" – JcFx

2

Để làm điều đó bạn sẽ cần phải đã khởi tạo như một thành viên trừu tượng của lớp trừu tượng. hiện nguyên cảo không hỗ trợ tuy nhiên điều này các tính năng đã được đáp ứng và có một hạng mục công trình mở cho nó:

http://typescript.codeplex.com/workitem/395

+0

Tôi không chắc điều này là đúng. Xem bên dưới. – JcFx

+0

Nếu bạn muốn khởi tạo để không tồn tại trên cơ sở thì đó là câu trả lời nếu không nó sẽ trở thành một ghi đè. Nói đúng cách có những cách xấu xí làm tròn nó nhưng không nên khuyến khích. –

+0

Không nên khuyến khích? Đây chỉ là một ghi đè đơn giản. OP đã không yêu cầu một phương pháp trừu tượng - chỉ có khả năng ghi đè lên một phương pháp. – JcFx

Các vấn đề liên quan