[RFC] tsconfig 是否应该开启 strict 或 strictNullChecks

Đang mở
#423 1 bình luận 0 reaction 0 người được giao Xem trên GitHub

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
25/100
Loại issue
Tái cấu trúc
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
typescript
Lĩnh vực
build-system

Hướng nghiên cứu

Bắt đầu bằng việc xem xét tsconfig của repository và ví dụ useMergedState.ts, đặc biệt là khai báo generic gần dòng 19 và effect bắt đầu khoảng dòng 60. Hãy xem issue pro-components được liên kết để có thêm ngữ cảnh, sau đó xác định liệu có phù hợp để bật strict hoặc strictNullChecks hay không và xác định các tiêu chí chấp nhận về tính an toàn kiểu dẫn đến từ đó.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

WHY:不开启strictNullChecks的话会忽略所有的 null 和 undefined

举个例子:

useMergedState 中接受了泛型T作为内部的 innerValue 类型,但根据 L60 开始的代码

  // Sync value back to `undefined` when it from control to un-control
  useLayoutUpdateEffect(() => {
    if (!hasValue(value)) {
      setInnerValue(value);
    }
  }, [value]);

实际上 innerValue 的类型是T | undefined,因为没有开启 strictNullChecks 导致没有警告

该函数使用中,需要显性去指定泛型为 T | undefined 才能获取到实际正确的类型,如:

const [v] = useMergedState<string[]>(...) => const [v] = useMergedState<string[] | undefined>(...)

前者的写法,v的类型会忽略 undefined类型,导致后续编码产生错误

以上为我在debug该issue时发现: https://github.com/ant-design/pro-components/issues/6652

个人见解,欢迎讨论😁

Ngôn ngữ chính
TypeScript
Star
670
Fork
205
Merge trung bình
15 ngày 17 giờ
Pull request đã merge (30 ngày)
6

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. 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.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của react-component/util

Tất cả issue của react-component/util

Issue tương tự

Thêm issue về TypeScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.