microsoft / microsoft/TypeScript
abstract class prototype type has abstract methods even though they are not on the prototype
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- Go
- Star
- 111k
- Fork
- 14.4k
- Merge trung bình
- 1 ngày 19 giờ
- Pull request đã merge (30 ngày)
- 117
Mô tả
Bug Report
🔎 Search Terms
abstract, prototype, type
🕗 Version & Regression Information
All versions I tried
⏯ Playground Link
Playground link with relevant code
💻 Code
abstract class AnAbstract {
public abstract abstractMethod(): void;
public nonAbstractMethod(): void {
// do something
}
}
// no type error - undefined
console.log(AnAbstract.prototype.abstractMethod);
// no type error - false
console.log(AnAbstract.prototype.hasOwnProperty('abstractMethod'));
// defined
console.log(AnAbstract.prototype.nonAbstractMethod);
// true
console.log(AnAbstract.prototype.hasOwnProperty('nonAbstractMethod'));
🙁 Actual behavior
Abstract class prototype has abstract methods in the type
🙂 Expected behavior
Abstract class prototype to have only concrete methods in the type
I have a function that manually define methods based on what's in the prototype, unfortunately when I use an abstract class the type doesn't reflect reality.
If that type cannot change it would be great to be able to do something like:
type NoAbstract<T> = {
-abstract [key in keyof T]: T[key];
};
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Bắt đầu với ví dụ TypeScript Playground được liên kết và so sánh phương thức abstract được khai báo với hành vi của prototype khi chạy. Theo dõi cách kiểu của prototype thuộc một lớp abstract được hình thành, sau đó xác minh rằng các phương thức cụ thể vẫn khả dụng còn các phương thức abstract thì không; issue hoàn tất khi ví dụ được báo cáo được kiểm tra kiểu nhất quán với thực tế khi chạy và phần kiểm thử hồi quy liên quan đều đạt.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- javascript, typescript
- Lĩnh vực
- compilers
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 35/100