Tôi đang cố gắng xác định một đối tượng có ký hiệu là loại khóa vì MDN nói:
Giá trị ký hiệu có thể được sử dụng làm định danh cho các thuộc tính đối tượng [...]
Nhưng sử dụng nó làm kiểu cho thuộc tính khóa:
type obj = {
[key: symbol | string]: string
}
dẫn đến lỗi sau:
TS1023: Loại tham số chữ ký chỉ mục phải là 'chuỗi' hoặc 'số'.
thậm chí nó có thể được sử dụng như kiểu chỉ mục. Tôi đang sử dụng phiên bản bản thảo mới nhất ( v3.7.2
), các câu hỏi liên quan tôi đã tìm thấy:
- Bản mô tả: phá hủy một đối tượng với các ký hiệu là các khóa (Anh ta đang sử dụng một thể hiện thực tế của Biểu tượng, tôi muốn loại này
symbol
) - TypeScript: Tham số chữ ký chỉ mục phải là 'chuỗi' hoặc 'số' khi cố gắng sử dụng chuỗi | con số
- ES6: phá hủy một đối tượng với các ký hiệu là các khóa (Đó không thể là một giải pháp - có vẻ hơi sai khi sử dụng một thể hiện thực tế dưới dạng loại vì mỗi phiên bản Biểu tượng là duy nhất ...)
Tôi cũng đã xem qua các tài liệu ký hiệu bản thảo nhưng chúng chỉ cho thấy nó được sử dụng như thế nào chứ không phải là loại.
Thí dụ:
const obj = {} as {
[key: number | symbol]: string // Won't work
};
const sym = Symbol('My symbol');
obj[sym] = 'Hi';
any
đó là thông lệ xấu).
Map<Symbol,String>
như chúng tôi có Bản đồ chưa, nếu điều đó sẽ phục vụ mục đích của những gì bạn đang cố gắng đạt được
symbol
? Có thể hiển thị một ví dụ về cách bạn muốn sử dụng của bạntype obj
- Tôi nghi ngờ rằng tất cả các thuộc tính khóa ký hiệu sẽ làstring
s.