microsoft / microsoft/TypeScript

Allow non-null assertion operator on destructuring

Đang mở
#63,131 2 bình luận 0 reaction 0 người được giao Xem trên GitHub
Awaiting More Feedback Suggestion
Ngôn ngữ chính
Go
Star
111k
Fork
14.3k
Merge trung bình
2 ngày 4 giờ
Pull request đã merge (30 ngày)
132

Mô tả

### 🔍 Search Terms

destructuring non null assertion operator

### ✅ Viability Checklist

- [x] This wouldn't be a breaking change in existing TypeScript/JavaScript code
- [x] This wouldn't change the runtime behavior of existing JavaScript code
- [x] This could be implemented without emitting different JS based on the types of the expressions
- [x] This isn't a runtime feature (e.g. library functionality, non-ECMAScript syntax with JavaScript output, new syntax sugar for JS, etc.)
- [x] This isn't a request to add a new utility type: https://github.com/microsoft/TypeScript/wiki/No-New-Utility-Types
- [x] This feature would agree with the rest of our Design Goals: https://github.com/Microsoft/TypeScript/wiki/TypeScript-Design-Goals

### ⭐ Suggestion

Allow the non-null assertion post-fix operator to be used in destructuring assignments

### 📃 Motivating Example

I was destructuring an object with a long name, but I couldn't do so because I also needed to assert it wasn't null, and this is not currently allowed
```ts
const { veryVeryVeryLongPropertyName! } = obj;
```
So I had to do this
```ts
const veryVeryVeryLongPropertyName = obj.veryVeryVeryLongPropertyName!;
```

### 💻 Use Cases

### What do you want to use this for?
To avoid having to specify the name twice

### What workarounds are you using in the meantime?
```ts
// Workaround: Short name
// Shortcoming: Not what I actually wanted to do
const temp = obj.veryVeryVeryLongPropertyName!;

// Workaround: Default `never` value
// Shortcoming: Verbose
const { veryVeryVeryLongPropertyName = undefined! } = obj;
```

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

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Bắt đầu với các ví dụ về phép phân rã trong issue và ràng buộc đã nêu rằng JavaScript được phát ra không được thay đổi. Xem xét cách compiler xử lý các khẳng định non-null và các phép gán phân rã, sau đó xác định thiết kế và các bài kiểm thử cần thiết; công việc được xem là hoàn tất khi cú pháp được đề xuất được chấp nhận mà không thay đổi đầu ra khi chạy.

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

Đánh giá

Công nghệ
typescript
Lĩnh vực
compilers
Loại issue
Tính năng
Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
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

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.