microsoft / microsoft/TypeScript
Checking JS types does not accept @implements or @augments on constructor functions
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- Go
- Star
- 111k
- Fork
- 14.3k
- Merge trung bình
- 1 ngày 19 giờ
- Pull request đã merge (30 ngày)
- 117
Mô tả
TypeScript Version: 3.9.5 (also tested on 3.9.3 initially)
Search Terms: @implements, jsdoc
Code
/**
* @param {string} name
* @implements {EventTarget}
* @constructor
*/
function Foo (name) {
this.name = name
}
/**
* @param {string} type
* @param {EventListenerOrEventListenerObject} listener
* @param {boolean | AddEventListenerOptions} [options]
*/
Foo.prototype.addEventListener = function (type, listener, options) {}
Then run tsc --noEmit --checkJS --allowJS reproducer.js
Expected behavior:
According to https://www.typescriptlang.org/docs/handbook/type-checking-javascript-files.html#constructor-functions-are-equivalent-to-classes, constructor functions are treated like classes. So using @implements or @augments on them should be possible. It used to work in the past.
Actual behavior:
reproducer.js:6:10 - error TS8022: JSDoc '@implements' is not attached to a class.
6 function Foo (name) {
~~~
Found 1 error.
Playground Link: I was not able to reproduce this in the playground (but it does not have the latest 3.9 versions available)
Related Issues:
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ụ reproducer.js và chạy tsc --noEmit --checkJS --allowJS reproducer.js bằng phiên bản TypeScript bị ảnh hưởng. Theo dõi cách xử lý JSDoc @implements và @augments trên các hàm khởi tạo; công việc được hoàn thành khi các chú thích được chấp nhận mà không có TS8022 và các kiểm tra JavaScript hiện có vẫn hợp lệ.
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ó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức phù hợp với người mới
- 45/100