type callbacks
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 20/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Cần làm rõ
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- typescript
- Lĩnh vực
- compilers
Hướng nghiên cứu
Bắt đầu bằng cách đọc các ví dụ type-callback được đề xuất trong issue này và issue được liên kết #23188, trong đó đề cập đến các kiểu trung gian. Issue này không nêu tên các tệp triển khai hoặc các bài kiểm thử, và yêu cầu thảo luận thay vì một thay đổi đã được xác định. Một nỗ lực hoàn chỉnh sẽ cần một đề xuất được thống nhất về cách biểu diễn và áp dụng các type-callback.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
The more I work with advance types the more apparent the following problems become:
No intermediate types
At the current stage the advanced types are represented via expressions. Quite often there is a need to reuse exactly the same part of such expression in more than one place. Currently there is no way to capture a part of it and reuse it, consider:
type A<X> = { x: B<X>, y: B<X> }
here I wish I could save B<X> into a local type C somehow to be able to write
// speculative syntax:
type A<X> = <
type C = B<X>;
{ x: C, y: C };
>;
per @RyanCavanaugh intermediate types are covered by https://github.com/Microsoft/TypeScript/issues/23188
No way to specify a type callback
Currently type parameters are the only way to define a parametric type. There is no way to define a type based on a type callback:
interface Z { x: string; y: number; }
// speculative syntax:
type A<T, F: X =>..., T> = { [P in keyof T]: F<T[P]>; } // <-- wish could do this
type B = A<Z, X => X extends string ? true : false>; // { x: true; y: false; }
type C = A<Z, X => { get: () => X }>; // { x: { get: () => string; }; y: { get: () => number; }; }
I am not sure what a proposal would be, but these problems are definitely worth a discussion
- 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
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.
Issue khác của microsoft/TypeScript
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
microsoft/TypeScript#64322 · 2 bình luận · 1 reaction · 2 người được giao ·
-
Possible Improvement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
microsoft/TypeScript#64278 · 1 bình luận · 1 reaction ·
-
Docs
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
microsoft/TypeScript#64118 · 1 bình luận ·
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
microsoft/TypeScript#64094 ·
-
Docs
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
microsoft/TypeScript#63959 · 5 bình luận ·
Tất cả issue của microsoft/TypeScript
Issue tương tự
-
kind/bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
kubernetes-sigs/prow#953 · 1 bình luận ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
caddyserver/caddy#8046 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 86/100
-
L1 recommended for recruits
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
-
area/entangle bug
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 92/100