Để thực hiện chức năng quá tải, hãy viết tất cả các chữ ký quá tải cuộc gọi bạn muốn hiển thị trước, sau đó là chữ ký thực hiện là phần thừa của tất cả chữ ký quá tải. Ví dụ:
class Thing implements IThing {
// Implement the name and age fields
name: string;
age: number;
// Overload signature #1
sayHello(name: string): string;
// Overload signature #2
sayHello(age: number): number;
// Implementation signature, not visible to external callers
sayHello(arg: any): any {
if(typeof arg === 'string') {
return this.name;
} else if(typeof arg === 'number') {
return this.age;
} else {
throw new Error('sayHello can only take string or a number');
}
}
}
var x = new Thing();
var n = x.sayHello('world'); // n: string
var a = x.sayHello(42); // a: number
var e = x.sayHello(false); // error: false is not string or number
Nguồn
2013-07-31 05:31:47
Điều đó không giống như TypeScript hợp lệ đối với tôi. Bạn đã xem xét các mẫu mã ở đây chưa? http://www.typescriptlang.org/Tutorial/ –
không có lỗi nào xảy ra qua IntelSense, tôi nhận đoạn mã này từ video giới thiệu về các loại tại đây: http://channel9.msdn.com/posts/Anders-Hejlsberg-Giới thiệu -TypeScript –
Đây là TypeScript hoàn toàn hợp lệ và đây là một câu hỏi hợp lý, đơn giản. Bỏ phiếu để mở lại. –