Tôi đang cố gắng thử nghiệm một ví dụ khá giả vờ trong sân chơi trên Typescriptlang.org. Giao diện INewable của tôi chỉ định một đối số hàm tạo chuỗi đơn. Trong phần thân của phương thức factory của tôi, tôi không tôn trọng ràng buộc này (hoặc bằng cách sử dụng một số hoặc gọi với một danh sách đối số void). Tôi không nhận được một lỗi squigly hoặc cảnh báo.Loại bản ghi: mới() Hợp đồng giao diện không được thực thi
Tôi đã làm điều gì sai hoặc đây có phải là lỗi không?
interface INewable<T> {
new(param: string): T;
}
interface IToStringable {
toString(): string;
}
module Factory {
export function createInstance<T extends IToStringable>(ctor: INewable<T>): T {
return new ctor(1024); //why doesn't this fail?
}
}
var d = Factory.createInstance(Function);
alert(d.toString());
EDIT: Các hình thức đơn giản:
function createInstance<T>(ctor:new(s:string)=>T):T {
return new ctor(42); //why doesn't this fail either
}
triển lãm cùng một lỗi.