Tìm kiếm trang web

Triển khai kiểu lai TypeScript


Trên trang web http://www.typescriptlang.org/Handbook#interfaces, Các loại Hybrids được giải thích. Vì chúng cực kỳ hữu ích để tạo kiểu cho JS - tôi tự hỏi liệu có thể định nghĩa một lớp triển khai ví dụ như interface đó:

interface Counter {
    (start: number): string;
    interval: number;
    reset(): void;
}

Nếu không thì có lẽ có thể chỉ tạo một đối tượng của loại đó? Làm thế nào?

Câu trả lời #1

Tôi tự hỏi liệu có thể định nghĩa một lớp thực thi

Không

Nếu không thì có lẽ có thể tạo ra chỉ một đối tượng của loại đó không?

Vâng. Sẽ có một vài trường hợp sử dụng khẳng định kiểu (hoặc any):

interface Counter {
    (start: number): string;
    interval: number;
    reset(): void;
}

function getCounter():Counter{
    var counter = <Counter>function(start:number){};
    counter.interval = 123;
    counter.reset = function(){};
    return counter;
}

Câu trả lời #2

Tôi nghĩ phiên bản cập nhật hơn là cái này:

interface Counter {
  (start: number): string;
  interval: number;
  reset(): void;
}

function getCounter(): Counter {
  return (() => {
    var result: any = (start: number) => "Start!";
    result.result = 10;
    result.reset = () => {}
    //Converts the temporary variable to the interface type.
    return <Counter> result;
  })();
}

Bài viết liên quan